问答详情
源自:4-13 使用for循环打印9×9乘法表

i=9;i>=1;i--和i=9;1<=i<=9;i--两者有区别吗

刚才逗比得用回答来补充问题弄的没人回答了 所以再问一次

 为什么区间都1~9后者就无法输出结果呢

提问者:IT小逗比 2015-08-10 15:51

个回答

  • 堕天使008
    2015-08-10 17:48:24
    已采纳

    是谁教你 代码里的多条件可以连着写的?

    for(i=1;i<=9;i++){}   //我相信这样写没问题,不会报错
    for(i=9;i>=1;i--){}   //这俩写法效果一样,其实大多数时候人们习惯写上面++的那个。
    if(i>1 && i<=9) {}    // 多条件是需要 逻辑运算符的,不能直接连起来,数学的做法计算机不适用。


  • onemoo
    2015-08-11 01:02:05

    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的。