四仰化三铁 发表于 2020-11-9 20:57:08

关于运算顺序

#include<stdio.h>
#define PRINT(int) printf(#int"=%d\n",int)
int main()
{
        int x=1,y=1,z=1;
        x+=y+=z;
       
        PRINT(x<y?x++:y++);
}
请问大佬们为什么出来的结果是2啊?
我的理解是经过x+=y+=z后x=3 y=2 z=1;
因为++的运算先与?:所以最后输出y++为3
请问哪里有问题,感谢无私解答

xieglt 发表于 2020-11-10 08:42:15

int x=1,y=1,2=1;
x+=y+=z;         //y=2, x=3
x<y? x++ : y++;//x<y 不成立,因此取 y++的值, ++在后面,先取值再++,因此结果是2

四仰化三铁 发表于 2020-11-10 14:06:38

但是运算顺序不是++先于?:吗?
页: [1]
查看完整版本: 关于运算顺序