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 都是有先使用后修改的说法(翻译版).