来大神看看。为什么他会执行下去
#include<stdio.h>int main(void)
{
int sum, x;
sum = 0;
scanf("%d",&x);
while(x>0)
{
if(x%2==0)
sum = sum +x;
scanf("%d",&x);
}
printf("%d", sum);
}
我输入2 4 -4
他输出6
第一个想法 用int存入了一个数组 显然这是错误的
第二个想法数据存储中出现了bug 当我用调试的时候 在While 那设下断点, 再次输入 2 4 -4他就不能执行了
这是为何?为什么不在调试中 输入 2 4 -4 他能执行?
求大神帮解,这难道是编译器的问题嘛?用的vc++6.0 我觉得你想表达的意思应该是,输入“2 4-4”然后回车,还能执行是吧?这很正常,你在屏幕上输入的数字只是存入到缓冲区了,回车后才将缓冲区清空输入内存,之后,每次的scanf从内存里取一个数给x,程序也就这么执行下去了( scanf("%d",&x);在遇到空格后就认为本次输入结束,内存里后面的数据还都留着,不是被顶掉了)
页:
[1]