If 条件中的变量值 C++

Piy*_*ava -1 c++ if-statement variable-assignment equality-operator

我正在学习 C++ 编程语言,在某些时候陷入困境有人可以帮助我吗?问题是我在谷歌上搜索了一些东西,并了解到如果条件可以临时改变变量值。我的代码如下。

#include <iostream>

using namespace std;

int main()
{
    int a = 2;
    int b = a + 1;

    if ((a = 3) == b)
    {
        cout << a;
    }
    else
    {
        cout << a + 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,它打印 else 块,为什么不打印 if 块,条件必须为真?

Vla*_*cow 5

你误会了。

如果您将按以下方式更改代码

    int a = 2;
    int b = a + 1;

    if (( a = 3 ) == b)
    {
        std::cout << "if " << a << '\n';
    }
    else
    {
        std::cout << "else " << a + 1 << '\n';;
    }
Run Code Online (Sandbox Code Playgroud)

然后你会看到输出

if 3
Run Code Online (Sandbox Code Playgroud)

在if语句的表达式中

    if (( a = 3 ) == b)
Run Code Online (Sandbox Code Playgroud)

计算相等运算符的左操作数。结果a变得等于3,又等于b

如果您的编译器支持 C++ 17 标准,那么您可以在 if 语句中声明变量,例如

if ( int a = 2, b = a + 1; ( a = 3 ) == b )
Run Code Online (Sandbox Code Playgroud)