代码之家  ›  专栏  ›  技术社区  ›  Ben rubund

为什么组合上界和下界比较总是评估为真?[复制品]

  •  0
  • Ben rubund  · 技术社区  · 7 年前

    这个问题已经有了答案:

    为什么第一个总是评价为真?我希望这两个语句的行为相同。

       for (int i =0;i<4;++i) (0 < i < 3) ? cout << "True " : cout << "False ";
    

    真的真的真的真的

        for (int i =0;i<4;++i) (0 < i && i < 3) ? cout << "True " : cout << "False ";
    

    假真假

    2 回复  |  直到 7 年前
        1
  •  5
  •   Some programmer dude    7 年前

    条件 0 < i < 3 是真的 (0 < i) < 3 .

    如果 0 < i 结果是,是真是假( 0 为假的 1 真的)威尔 总是 小于 3 .

    如果你想确定 i 在一个范围内,您需要多个 分离 比较: 0 < i && i < 3 就像在第二个循环中一样。

        2
  •  2
  •   Jack    7 年前

    因为C++中没有组合的比较操作符。表达式计算为

    (0 < i) < 3
    

    但是 x < 1 评估为 true / false 其计算结果为 1 / 0 当与 int 所以最后 0 < 3 总是正确的 1 < 3 也是。

    推荐文章