<分区>
为什么第一个总是评估为真?我希望这两个语句的行为相同。
for (int i =0;i<4;++i) (0 < i < 3) ? cout << "True " : cout << "False ";
True True True True
for (int i =0;i<4;++i) (0 < i && i < 3) ? cout << "True " : cout << "False ";
False True True False
<分区>
为什么第一个总是评估为真?我希望这两个语句的行为相同。
for (int i =0;i<4;++i) (0 < i < 3) ? cout << "True " : cout << "False ";
True True True True
for (int i =0;i<4;++i) (0 < i && i < 3) ? cout << "True " : cout << "False ";
False True True False
最佳答案
条件0 < i < 3
真的是(0 < i) < 3
.
而且 0 < i
没关系是否为真,因为结果(0
为假,1
为真)总是小于3
.
如果你想确定i
在一个范围内,您需要多次单独比较:0 < i && i < 3
,就像您在第二个循环中所做的那样。
关于c++ - 为什么合并的上限和下限比较总是评估为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498653/