
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
プログラミングの問題です 「金...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
Linuxで入力待ちなしkeyread関...
-
Excel VBAで、Application.Inpu...
-
電卓の小数点
-
C言語・YesNo入力のループで解...
-
VB カウントダウンタイマーの作...
-
プログラミング初心者です。 Py...
-
scanf が無視されます
-
C言語の整数の判別
-
java初心者です。入力されたの...
-
C言語でgetchar();が上手く使え...
-
入力値が1以下、かつ数字以外の...
-
正負を反転させて出力するプロ...
-
C言語 for文をつかって記号を表...
-
4桁の数字以外を入力したらエラ...
-
C言語 アロー演算子
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanfが2回使えない・・・?;
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
プログラミングの問題です 「金...
-
if文の条件にscanf関数を使うと…?
-
C言語でgetchar();が上手く使え...
-
UWSCで変数をキー入力
-
4桁の数字以外を入力したらエラ...
-
EDITコントロールで入力できる...
-
C言語でつるかめ算をするにはど...
-
Userformの入力順序をタブオー...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報