-4

如果int x=5;我假设表达式y=++x * ++x;被评估为:

首先执行++x导致x=6然后再次++x导致x=7表达式然后评估使用相同推理的y=x*xy=49 以下代码行

int z=5, x=5,y=0,p=0;
y=++x * ++x + ++x;
p= ++z + ++z * ++z;

应该评估相同的值,yp编译器会产生不同的答案。我可能按照优先顺序缺少一些东西。

4

1 回答 1

3

您的两个表达式都通过尝试在没有中间序列点的情况下多次修改一个值而导致未定义的行为。您的问题没有一般性的答案。

于 2013-03-16T15:11:10.077 回答