关于如何在 cout 中处理布尔值的考试问题

Exam ques. on how booleans are handled in cout

本文关键字:布尔值 考试 问题 处理 于如何 cout      更新时间:2023-10-16

我正在为即将到来的考试做准备,遇到了这个对我来说没有意义的过去考试问题。

考虑以下主要功能:

int main()
{
    int x = 0;
    cout << "x = " << x << ", (0 < x < 10) = " << (0 < x < 10) << endl;
    int x = 5;
    cout << "x = " << x << ", (0 < x < 10) = " << (0 < x < 10) << endl;
    int x = 10;
    cout << "x = " << x << ", (0 < x < 10) = " << (0 < x < 10) << endl;
    return 0;
}

执行时,程序会打印以下内容:

x = 0, (0 < x < 10) = 1
x = 5, (0 < x < 10) = 1
x = 10, (0 < x < 10) = 1

准确解释发生了什么。


这就是问题所在。据我所知,输出的最后一行应该是"x = 10,(0 <10)>

你期望0 < x < 10是什么意思?

它不会检查x是否在 010 之间,如果这是你的想法。

< 是一个二元运算符,它遵循运算符计算规则(优先级和关联性)。

所以0 < x < 10实际上意味着(0 < x) < 10.您需要进行两次检查才能获得所需的结果(留给您)。

0 < x < 10不会做你认为它做的事情。它( 0 < x ) < 10这不是你想要的。0 < x的结果(将truefalse)然后与< 10进行核对,结果也将给出true(数值上等于1)或false(数值上等于0)。

你需要

( 0 < x ) && ( x < 10 )

以检查它们之间是否有x

因此,您使用 x=0 的第一个cout与给出 false 然后给出 0 < 10( 0 < 0 )相同(false 在数值上为 0),因此结果为 1。

类似地,您在x=5的第二个cout首先给出结果为假,然后使用0 < 10,它给出真。

最后,您在x=10第一次cout结果为真,再次为真,因此结果为 1。