请问是语意变了吗,真心求指点具体案例来自以下网址http://www.fgm.cc/learn/lesson8/02.html
3 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
楼上已经说了 赋值运算等级最低
没有括号的时候 iL <= 0 && iL = 0 最后才运算‘=’号,就会成把0复制给另一个值的运算了,所以不和语法,报错。
加了括号iL <= 0 && (iL = 0),会先执行括号,然后就是iL <= 0 &&0 来运算了 语法没错,先运算iL <= 0 如果是true 则就是true&&0 结果 0。
如果iL <= 0 运算出来是false,那么短路了 &&后面就不执行了,结果就是false!!!!
开满天机
TA贡献1786条经验 获得超13个赞
iL = 0不加括号,先执行iL <= 0,如果为假,不执行它
而有括号,那么先执行它,结果是iL <= 0必然为真,
不加括号相当于
if ( iL > 0) iL = 0;
加上括号相当于
iL = 0;
true;
慕田峪9158850
TA贡献1794条经验 获得超7个赞
不加()会出错,因为赋值运算等级最低,最后才执行,等价于 iL <= 0 && iL = 0 ==》 (iL <= 0 && iL )= 0 前面运算后为false false=0会报错 加括号就等价于 iL <= 0 && (iL = 0); ==> if(iL <= 0 )iL = 0;
添加回答
举报
0/150
提交
取消