以下是引用starzq00123在2012-7-25 14:23:12的发言:
#include
void main()
{int a,b,c;
c=a+b;
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",c);
输入4+9 结果是-1717986920
#include
void main()
{int a,b,c;
scanf("%d+%d",&a,&b);
c=a+b;
printf("a+b=%d\n",c);
}
输入4+9结果却是 13
对于第一个结果表示不理解 不知道怎么来的 c=a+b与scanf的顺序影响到了结果了么? 在以后怎么知道什么时候用scanf呢
C语言执行顺序是从main函数开始从上到下遇到调用函数采取调用后返回原main函数依次进行的。
楼主写的第一个#include
void main()
{int a,b,c;
c=a+b;
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",c);
执行顺序:
首先 开辟内存单元a,b,c(这时候a,b,c还没有被赋值所以会被计算机随机赋予一个数,这个赋值不同的运行环境会产生不同的随机数)
第二 执行c=a+b;也就是吧随机产生的a,b两个数赋值给c;
第三 执行scanf("%d+%d",&a,&b);为a,b重新赋值;
第四 printf("a+b=%d\n",c);输出c(因为c的二次赋值既c=a+b是在a,b为随机数状态下进行的,所以c会是随机数和而不是a,b二次赋确定值的和)