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 块,条件必须为真?
你误会了。
如果您将按以下方式更改代码
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)