宿題みてあげるっ
■ このスレッドは過去ログ倉庫に格納されています
0753超初心者
NGNGwhile(scanf("%d",&a)!=EOF)
これは『^Dが「入力されない間」繰り返す』ってことですよね…
(ここがすでに自信ないんですけど)
これを for でやってみようと思って
for(i=1; i<100; i++) /* 仮に百回繰り返すことにして */
{
scanf("%d",&a);
if(a==EOF) break;
}
としてみた所、いくら^Dを入れてもループを抜けなくなりました。
んで、ためしに
scanf("%d",&a);
printf("a = %d",a);
if(a==EOF) break;
としてみて、「a」に格納された数値を出力して見れるようにしてみて、
実行してaに^Dを入力すると、
a=10640000 (間違ってると思いますけどこんな感じの数字)
とでて来ました。EOFってたしか -1 ですよね。
これだったらたしかにif(a==EOF) break;にしても、^D(=1064000)
とEOF(=-1)は等しくならないから、if=「真」 にはならなくて、breakしないのはわかります。
でも上の while(scanf("%d"),&a!=EOF) で^Dを入れたらループを抜けるのは
^D!=EOFでwhileが「偽」、つまり^D==EOFになるからループを抜けるんですよね
なぜfor〜if() breakに書き換えた時に^d=1064000になって、ループを抜けれなくなたのでしょうか
ただのコンパイラのエラー?
■ このスレッドは過去ログ倉庫に格納されています