一元++优先顺序

时间:2013-03-16 15:10:36

标签: c unary-operator

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

首先执行++x导致x=6,然后再++x导致x=7表达式,然后评估y=x*x,使y=49的值为int z=5, x=5,y=0,p=0; y=++x * ++x + ++x; p= ++z + ++z * ++z; 使用相同的推理以下代码行

y

应该评估p和{{1}}的相同值,但编译器会产生不同的答案。我可能会按优先顺序错过一些东西。

1 个答案:

答案 0 :(得分:3)

两个表达式都会导致未定义的行为,尝试在没有插入序列点的情况下多次修改一个值。你的问题没有一般的答案。