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

C++标准有没有规定求值点的顺序?解决方案

2012-06-03 
C++标准有没有规定求值点的顺序?例如printf(%d\n,i++)到底是应该先printf i的值,再i+1还是printf (i+1

C++标准有没有规定求值点的顺序?
例如printf("%d\n",i++);
到底是应该先printf i的值,再i+=1
还是printf (i+1)

这个C/C++的标准有规定么?
谢谢!

[解决办法]
一般情况下是:
i++ 先i值,再i+=1
++i 先i+=1,再用i
[解决办法]
printf i;
i+=1;
顺序有保证的
[解决办法]
没有规定。。。
[解决办法]
printf("%d\n",i++);
这里应该没有未定义行为,没有在两个序列点之间对同一个对象进行会产生歧义的操作
[解决办法]
http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?74495

函数参数的求值后,进入函数体前,是一个顺序点.

还有先 用 再 ++ 的说法是不准确的.所以无法解释这个问题.

应该说, i++ 这个表达式的值是i被修改之前的值. 而其中"i被修改" 这一个副作用 则在下一个顺序点之前完成.

不懂就去看 C++ 标准. 这个问题连C++ primer 都是有先使用后修改的说法(翻译版).

热点排行