i=9;i>=1;i--和i=9;1<=i<=9;i--两者有区别吗
刚才逗比得用回答来补充问题弄的没人回答了 所以再问一次
为什么区间都1~9后者就无法输出结果呢
刚才逗比得用回答来补充问题弄的没人回答了 所以再问一次
为什么区间都1~9后者就无法输出结果呢
2015-08-10
1 <= i <= 9 无法实现区间判断,但这也是合法的复合表达式。
<= 是左结合的,所以这个复合表达式相当于这样: (1 <= i) <= 9
其中 1 <= i 的结果是bool值true or false,这个bool值又会与9进行比较。而在比较时bool值会转换为与9相同的类型(int),true会被转换为1,false会被转换为0。
于是,前次比较的结果为true时,整个表达式为 1 <= 9。 当结果为false时,表达式为 0 <= 9。 而不管是哪种情况,整个表达式都会为true。
如果这表达式是用在for中的,则循环条件永远为真,for将一直循环下去。
实际上这样的代码在编译时,编译器会warning的。
举报