c++ - 为什么合并的上限和下限比较总是评估为真?

标签 c++ syntax evaluation comparison-operators

<分区>

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

   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/

相关文章:

c++ - Eigen 库 : Assertions failed in a template

syntax - coffeescript try/catch 的简写

java - 定义和重用 MVEL 函数

C++ 错误 : explicit qualification

c++ - 为什么这个函数会导致崩溃? (多列表)

android - token 语法错误,构造放置错误?

c++ - 在 C++ 中 x 是整数时 "if (x) { … }"的含义是什么?

haskell - 为什么在 Haskell 中正确折叠时打印会影响顺序?

带小数点的 C++ 后缀求值

c++ - 两次使用cin的问题