还是没弄清楚,请shornmao和各位再看一下
shornmao兄,你说C++标准保证函数调用按照从左到右的顺序进行,但是表达式的求值顺序没有规定,是实现相关的,我还是没弄清楚。
void fun(int a,int b)
{
cout<<a<<endl;
cout<<b<<endl;
}
void main()
{
int a=2;
fun(a,a++);
}
程序的运行结果是2、2,而按照以前谭浩强的那本c语言教程,应该是3、2才对。
能不能再解释一下这个程序的输出结果???
我想弄明白不同的原因。。
问题点数:20、回复次数:4Top
1 楼xcopy(xcopy)回复于 2002-07-08 17:51:51 得分 5
你的主程序等价于
void main()
{ int a=2;
fun(a,a);
a=a+1;
}
明白否?Top
2 楼ck_chuyun(我也不是啥好鸟)回复于 2002-07-08 17:55:10 得分 0
原理???????Top
3 楼sx_enter(菜虫→→→★★★★★)回复于 2002-07-08 18:04:14 得分 5
表达式a++的值是a未加之前的值!Top
4 楼sx_enter(菜虫→→→★★★★★)回复于 2002-07-08 18:07:59 得分 10
先执行函数fun()把a++,a的值压栈,然后再计算a++.
可能和编译器有关.Top




