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関数について
-
C言語(構造体)
-
数字以外が入力されたらエラー...
-
Java 6人分の得点を入力し、平...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
IF文で戻ることはできますか?...
-
VB.NETで16進数+16進数や16進...
-
if文の条件にscanf関数を使うと…?
-
java初心者です。入力されたの...
-
cout関数を使っているのですが...
-
scanfが2回使えない・・・?;
-
プログラミング初心者です。 Py...
-
scanf()で、エラー対応
-
C言語で入力がないと1をだし続...
-
C言語 逆ピラミッドの作り方
-
入力エラーの処理について。
-
コマンドプロンプトからのEOFの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
プログラミングの問題です 「金...
-
Linuxで入力待ちなしkeyread関...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報