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

这里涉及到运算符的优先级及||的短路特性——当然此处没出现那种情况。
优先级 "<=" > "||" > "=" 故先执行y--<=x( 2<=1)为0 (执行该表达时后y再自减,y变为1) 再执行x+y!=z(1+1!=3) 为1 最后执行总的表达式 即x=0||1(x变为1) 当然输出1和1了
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-30
“||”的用法为,当它前面的语句为真时,就不会执行后面的语句,你的语句的输出为:2,1才对,“=”的优先级是大于||的优先级,所以按理说x=y--<=x是一个整体来执行,x=2,y=1。
第2个回答  2010-09-30
结果应该是0,1吧!
相似回答