gpt4 book ai didi

c++ - 为什么用 == 比较三个变量会得出 false?

转载 作者:行者123 更新时间:2023-12-02 06:10:45 24 4
gpt4 key购买 nike

以下程序的输出是“它们不相等”,但我希望“它们相等”作为三个比较变量 (x,yz) 相等。为什么?

#include <iostream>

int main()
{
int y, x, z;
y = 3;
x = 3;
z = 3;

if (x == y == z)
{
std::cout << "they are equal\n";
}
else
{
std::cout << "they are not equal\n";
}
}

最佳答案

这是因为表达式和类型的求值方式所致。

让我们评估最左边的==

x == y ...

此结果为 true。让我们重写表达式:

//  x == y
if (true == z) {
// ...
}

true 是一个 bool 值。 bool 值不能直接与 int 进行比较。必须进行从 bool 值到整数的转换,结果为 1(是的,true == 1)。让我们将表达式重写为其等效值:

//  true
if (1 == z) {
// ^--- that's false
}

但是z不等于1。这种说法是错误的!

相反,您应该分隔两个 bool 表达式:

if (x == y && y == z) {
// ...
}

关于c++ - 为什么用 == 比较三个变量会得出 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58271178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com