-
繁星点点滴滴
楼上已经说了 赋值运算等级最低没有括号的时候 iL <= 0 && iL = 0 最后才运算‘=’号,就会成把0复制给另一个值的运算了,所以不和语法,报错。加了括号iL <= 0 && (iL = 0),会先执行括号,然后就是iL <= 0 &&0 来运算了 语法没错,先运算iL <= 0 如果是true 则就是true&&0 结果 0。如果iL <= 0 运算出来是false,那么短路了 &&后面就不执行了,结果就是false!!!!
-
开满天机
iL = 0不加括号,先执行iL <= 0,如果为假,不执行它而有括号,那么先执行它,结果是iL <= 0必然为真,不加括号相当于if ( iL > 0) iL = 0;加上括号相当于iL = 0;true;
-
慕田峪9158850
不加()会出错,因为赋值运算等级最低,最后才执行,等价于
iL <= 0 && iL = 0
==》
(iL <= 0 && iL )= 0
前面运算后为false
false=0会报错
加括号就等价于
iL <= 0 && (iL = 0);
==>
if(iL <= 0
)iL = 0;