【发布时间】:2021-05-25 22:38:32
【问题描述】:
以下代码 std::cout << (0 < 5 < 2); 将 1 (true) 输出到控制台,即使从数学上讲,5 < 2 是 false。这背后的逻辑是什么?
假设:这是因为0 < 5被计算为1,因此0 < 5 < 2被计算为1 < 2。我说的对吗?
【问题讨论】:
-
是的,你是对的。
-
正确。它从左到右进行评估。使用括号进行单独评估
-
我不知道
bool到int算作整数提升,可能是 usual arithmetic conversions 的一部分。bool原语是否算作 _Bool 类型的位域? -
0 < 5计算结果为true,true < 2也是如此。std::cout << true写入“1”,除非标志std::ios_base::boolalpha设置在std::cout上
标签: c++ math boolean boolean-logic