main() {int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z; printf("%d,%d",x,y); } 运行的结果是1和1,为什么不

结果为什么不是0和1
2024-11-28 21:25:37
推荐回答(3个)
回答1:

这里涉及到运算符的优先级及||的短路特性——当然此处没出现那种情况。
优先级 "<=" > "||" > "=" 故先执行y--<=x( 2<=1)为0 (执行该表达时后y再自减,y变为1) 再执行x+y!=z(1+1!=3) 为1 最后执行总的表达式 即x=0||1(x变为1) 当然输出1和1了

回答2:

“||”的用法为,当它前面的语句为真时,就不会执行后面的语句,你的语句的输出为:2,1才对,“=”的优先级是大于||的优先级,所以按理说x=y--<=x是一个整体来执行,x=2,y=1。

回答3:

结果应该是0,1吧!