w*******n 发帖数: 773 | 1 int a=10,b;
b=a++ + ++a;
printf("%d,%d,%d,%d",b,a++,a,++a);
运行结果。
22,13,14,14
按照我的理解
应该是:
22 12 13 14
谁能展开说说吗? | c******w 发帖数: 1108 | | J*******i 发帖数: 2162 | 3 C++真奇怪...
同样的程序用java算出来就是12,13,14
而printf("%d,%d,%d,%d\n",b,a,a,++a);结果是
22,13,13,13, 似乎说明是从右往左evaluate arguments的
而printf("%d,%d,%d,%d\n",b,a++,a++,a);结果是
22,13,12,14,似乎说明是从中间开始evaluate的...
还是compiler有什么trick? | c***2 发帖数: 838 | 4 undefined or depending on compiler.
these questions shall not be asked. | a****n 发帖数: 1887 | | c*b 发帖数: 3126 | 6 取决于编译器实现
non-sense
【在 w*******n 的大作中提到】 : int a=10,b; : b=a++ + ++a; : printf("%d,%d,%d,%d",b,a++,a,++a); : 运行结果。 : 22,13,14,14 : 按照我的理解 : 应该是: : 22 12 13 14 : 谁能展开说说吗?
| w***o 发帖数: 6775 | 7 RE this, correct answer.
【在 c***2 的大作中提到】 : undefined or depending on compiler. : these questions shall not be asked.
|
|