- C/C++ code
#include<stdio.h> int add(int a,int b){ return a+b; } void main() { int c=8; printf("%d %d %d\n",c,add(c++,c++),c); c=8; printf("%d %d %d\n",c,add(++c,++c),c); c=8; printf("%d %d %d\n",c,add(++c,c++),c); c=8; printf("%d %d %d\n",c,add(c++,++c),c); getchar(); }
VC6的运行结果是
10 16 8
10 19 8
10 17 8
10 18 8
VS2010的运行结果是
8 16 8
10 20 10
9 17 9
9 18 9
怎么回事,太蹊跷了
------解决方案--------------------
楼主你知道那么多逗号,有几个是真正的逗号运算符么?
------解决方案--------------------
不是优化造成的,现在的VC对++ --的求值处理有问题,没有按照正常的求值顺序。
------解决方案--------------------
本人也是小鸟一个,还是说下我的看法哈
首先调用函数的时候,实参之间的的逗号只是普通的标点符号不是运算符
还有你调用add的时候,两个参数都是c变量的自增,这属于未定义行为(我是这么认为的),你可以去查一下c语言的未定义行为