前/后增量减少单线评估

时间:2017-11-24 06:47:16

标签: c operators post-increment pre-increment

你能解释一下吗。

我已经阅读了有关stackoverflow的几乎所有问题

    1. 未定义的行为
    1. pre / post inc .. dec .. operator precedence / associativity
    1. 使用括号

但结果尚无定论。

请解释一下,明天我会接受采访。

int a, x = 0;
//                               value of x ------>                 a(sum)      
//gcc 4.9.9.2[dev cpp]            2    1      2      4      5       14
//acc to my calculation           2    0      2      4      5       13      
//geeksforgeeks compiler          5    5      5      5      5       15
//gcc 6.3 [codechef ide]          5    5      5      5      5       15
a = ((((++x + x++) + ++x) + ++x) + ++x);

printf("%d....%d", x, a);

return 0;

如果我犯了错误,请帮我纠正。 感谢

1 个答案:

答案 0 :(得分:2)

没有序列点,因此您的代码会调用 Undefined Behavior

括号不会引入序列点,因此,尽管您使用它们,但仍然会调用UB。