C言語なら俺に聞け(入門篇) Part 30
■ このスレッドは過去ログ倉庫に格納されています
0691デフォルトの名無しさん
2008/06/22(日) 13:35:12#include <stdio.h>
int main(void)
{
int num;
do{
printf("正の整数を入力して下さい :");
scanf("%d",&num);
if(num<0)
puts("負の整数は入力できません");
}while(num<0);
printf("入力した整数を逆から読むと ");
do{
printf("%d", num % 10);
num /= 10;
}while(num);
puts(" になります。");
return 0;
}
上記のコードで、scanfの時点でnumに負の実数を入力すると、
無限ループになってしまいます。
なぜ2順目以降のscanfが飛ばされ、新しく数値を代入することができないのでしょうか?
intをdoubleに変えて、scanf内の%dを%lfに変えても同じ結果でした。
無限ループは
「正の整数を入力して下さい :負の整数は入力できません」
が、延々出力されます。
■ このスレッドは過去ログ倉庫に格納されています