丶Red 发表于 2014-10-28 17:00:42

来大神看看。为什么他会执行下去

#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 他能执行?

丶Red 发表于 2014-10-29 00:37:46

求大神帮解,这难道是编译器的问题嘛?用的vc++6.0

fireofsun 发表于 2014-10-30 17:03:07

我觉得你想表达的意思应该是,输入“2 4-4”然后回车,还能执行是吧?这很正常,你在屏幕上输入的数字只是存入到缓冲区了,回车后才将缓冲区清空输入内存,之后,每次的scanf从内存里取一个数给x,程序也就这么执行下去了( scanf("%d",&x);在遇到空格后就认为本次输入结束,内存里后面的数据还都留着,不是被顶掉了)
页: [1]
查看完整版本: 来大神看看。为什么他会执行下去