This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
                                
                                    (14个回答)
                                
                        
                                2年前关闭。
            
                    
你能给我解释一下吗

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



未定义的行为


前置/后置公司dec。运算符优先级/关联性


使用括号



但结果尚无定论。

请解释一下,我明天要面试。

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;


如果我犯了错误,请帮助我纠正它们。
谢谢

最佳答案

没有序列点,因此您的代码将调用未定义行为。

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

关于c - 单行前/后增量减量评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47467712/

10-11 21:13