This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
                                
                                    (14个回答)
                                
                        
                                6年前关闭。
            
                    
当我输入下面的代码时:

int a=10,b,c,d,e;
c= a++;
d = ++a;
e = ++a;
printf("value of c=%d, d =%d, e=%d",c,d,e);


它给我类似c =10d= 12e=13的输出
当我们添加这些值时,即10+12+13变为35
但是当我像这样编码时:

b = a++ + ++a + ++a;
printf("value of b=%d" ,b);


它给了我输出36

有人可以描述此代码背后的过程是什么以及为什么代码输出不同吗?
谢谢!

最佳答案

美味的Undefined Behaviour+(以及许多其他)的操作数的求值顺序留给实现。因此,第二种情况甚至不总是36

关于c - C语言中算术运算的层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17379384/

10-11 23:16
查看更多