首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥这两个C程序例子输出的结果不一样

2013-12-30 
为什么这两个C程序例子输出的结果不一样?#includestdio.h#includewindows.h//Example 1int main(){int

为什么这两个C程序例子输出的结果不一样?

#include<stdio.h>
#include<windows.h>

//Example 1
int main()
{
int a=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b);
system("pause");
return 0;
}
//output: 1,2


/**
//Example 2
int main()
{
int a=1,b=0;
printf("%d,%d\n",b=a+b,a=2*b);
system("pause");
return 0;
}
//output: 0,0
**/

[解决办法]
C语言函数调用时,参数是按照从右到左入栈的,因此printf("%d,%d\n",b=a+b,a=2*b)函数调用时,a=2*b先入栈,即先计算2*b,那么 a=0,0入栈,然后b=a+b算出b=0,0再入栈。因此参数是两个0。

热点排行