No.4ベストアンサー
- 回答日時:
試してないけどこのコードは無限ループでしょうね。
人間の考え方と、コンピュータの考え方の違いがまさに現れてるコードに見える。
このコードは簡単に言うと、while(判定文1or判定文2or判定文3)てことです(それはわかりますか?)。
で、判定文1は今仮に置いとくとしても、判定文2と判定文3は絶対にTrueになってしまうんですよ。
それはわかりますか?
判定文というのは、要は0ならFalse、0以外ならTrueですから、判定文2に'B'という0以外の値('B'は0x42)を書いた時点で必ずTrueになってしまいます。
だから、たとえ判定文1がFalseであっても判定文2は絶対Trueになるから、判定文3は評価されることすらなく、while()の中全体の評価は必ずTrueとなってしまい、無限ループになります(次の制御文に行きません)。
この回答へのお礼
お礼日時:2007/12/18 12:22
ご回答ありがとうございます。
while((c=getchar())!='A'||'B'||'C')
ここが変だと気づきました。
へぼミスです。
親切な回答ありがとうございました。
No.5
- 回答日時:
無限ループになる理由はNo4さんが回答しているので、
蛇足ですが、一度は必ず入力するならば、
int c;
do{
c = getchar();
}while( c!='A' && c!='B' && c!='C' );
でいいかと。
親切なのはNo1さんのが親切かな。
ちなみに細かいですが、getcharは入力ストリームから文字を、
unsigned char型の値として読み取り、int型に変換して返してきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
scanf が無視されます
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
ワードで文字を入力する時の変...
-
実行結果の順番がおかしいんで...
-
プログラムの実行時に'<'でリダ...
-
至急教えてください!プログラ...
-
C言語でつるかめ算をするにはど...
-
プログラミング初心者です。 Py...
-
enterでループ終了
-
無限ループを抜け出す方法を教...
-
if文の条件にscanf関数を使うと…?
-
コンボボックスで日本語入力を...
-
入力候補を表示させるには・・・?
-
プログラミングの問題です 「金...
-
c言語応用で血液型判定プログ...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
コンソールアプリの入力時に改...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
小数か整数かを判定する方法
-
cout関数を使っているのですが...
-
double型が正常に認識されてい...
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
-
WindowsでEOF
おすすめ情報