表达式:
k = ( (x++ && y++) || ++z );
因为++z=1, 所以=号右值为1,k=1,且z=1
x++,所以x=1; 但x++= 0,所以y++未执行。y=0;
楼上的不对吧,如果真的按楼上的解释则X=y啊,显然两者不相等。
运算过程如下:
k = (x++&&y++) || (++z)=((x++&&y)++) || (++z)=((1&&0)++)||(++z)=(0++)||(++z)=1||1=1
因此可以解释为什么x、y不相等。因为y并没有进行自增运算,而x进行了自增运算。
故弄玄虚的做法,老老实实加上括号才是王道。
&&优先级比||高,相当于k = (x++&&y++) || (++z) = 0 || 1 = 1