刚才逗比得用回答来补充问题弄的没人回答了 所以再问一次
为什么区间都1~9后者就无法输出结果呢
是谁教你 代码里的多条件可以连着写的?
for(i=1;i<=9;i++){} //我相信这样写没问题,不会报错 for(i=9;i>=1;i--){} //这俩写法效果一样,其实大多数时候人们习惯写上面++的那个。 if(i>1 && i<=9) {} // 多条件是需要 逻辑运算符的,不能直接连起来,数学的做法计算机不适用。
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的。