a=(x=x +1)||(y=y +1);
一句一句来哦,
先看 或运算 || ,
m || n, 先执行m,
如果 m为真,返回真。(n 部分不会被执行)
如果 m为假,则执行n,
如果 n 为假,返回假,
如果 n 为真,返回真。
m = (x = x + 1)
所以 x 加了1 哦, x = 3 了,是 m =3 是真哦,所以不用执行 n 了。
a = 1 真
x = 3
y = 2
这里涉及到的运算符优先级为:加号为4级,取模(求余)和乘除为3级,(int)是强制类型转换,为2级,而括号为最高的1级,因此该式首先计算x+y=8.5,然后取整,为8,剩下的取模和乘除运算依次从左到右,1%2=1,然后乘以8,等于8,接下来8%2=0,最后除以4,等于0,然后再加上x,因此最后的结果是x,即3.6。
结果是x==3,a==1,y==2。
m||n,错字太多了吧
为什么y==2