【问题标题】:Why does (0 < 5 < 2) result true in C++? [duplicate]为什么 (0 < 5 < 2) 在 C++ 中结果为真? [复制]
【发布时间】:2021-05-25 22:38:32
【问题描述】:

以下代码 std::cout &lt;&lt; (0 &lt; 5 &lt; 2);1 (true) 输出到控制台,即使从数学上讲,5 &lt; 2 是 false。这背后的逻辑是什么?

假设:这是因为0 &lt; 5被计算为1,因此0 &lt; 5 &lt; 2被计算为1 &lt; 2。我说的对吗?

【问题讨论】:

  • 是的,你是对的。
  • 正确。它从左到右进行评估。使用括号进行单独评估
  • 我不知道 boolint 算作整数提升,可能是 usual arithmetic conversions 的一部分。 bool 原语是否算作 _Bool 类型的位域?
  • 0 &lt; 5 计算结果为 truetrue &lt; 2 也是如此。 std::cout &lt;&lt; true 写入“1”,除非标志 std::ios_base::boolalpha 设置在 std::cout

标签: c++ math boolean boolean-logic


【解决方案1】:

你自己回答了这个问题,你是 100% 正确的。评估是根据优先级进行的。可能对你有帮助:-C++ operators Precedence

【讨论】:

  • 平局时的优先顺序和顺序。
猜你喜欢
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 2018-11-23
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多