为什么组合的上限和下限比较总是评估为真?

Ben*_*Ben 0 c++ syntax evaluation comparison-operators

为什么第一个总是评估为真?我希望这两个陈述的行为相同.

   for (int i =0;i<4;++i) (0 < i < 3) ? cout << "True " : cout << "False ";
Run Code Online (Sandbox Code Playgroud)

真实真实

    for (int i =0;i<4;++i) (0 < i && i < 3) ? cout << "True " : cout << "False ";
Run Code Online (Sandbox Code Playgroud)

False True True False

Som*_*ude 5

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

并且无论是否0 < i真实都无关紧要,因为结果(0对于假和1真)总是小于3.

如果要确保i在一个范围内,则需要进行多个单独的比较:0 < i && i < 3,就像在第二个循环中一样.