赋值逻辑运算的结果

use*_*717 -1 c++ variable-assignment

int  a = 5;
if(a = 5)
{
    cout<<"111111"<<endl;
}
if(a = 0)
{
    cout<<"22222"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

结果是

111111按任意键继续

对某些通知进行修改,分配成功,结果为真.

"a = 0"和a = 1"应该分配成功.但结果只是第一次执行....

为什么?

fli*_*ght 6

一些评论?这似乎很狡猾,在这种情况下是不正确的.

operator=on int的结果是已分配的值.在这种情况下a = 5会导致5a = 0结果为0.既然5作为计算true您看到"111111"但由于0计算结果为false看不到"22222".

至于分配值的分配原因,请考虑具有多个分配的情况:

a = b = 5;
Run Code Online (Sandbox Code Playgroud)

这与:

a = (b = 5);
Run Code Online (Sandbox Code Playgroud)

因此,按预期工作(b = 5)必须返回5.


car*_*000 5

的结果a=55和的结果a=00,因此您的程序类似于:

int a = 5;
if(5)
{
    cout<<"111111"<<endl;
}
if(0)
{
    cout<<"22222"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

由于if语句需要布尔值,因此5转换为,true然后隐式0转换为false。所以您的程序现在就像:

int a = 5;
if(true)
{
    cout<<"111111"<<endl;
}
if(false)
{
    cout<<"22222"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

因此它将仅打印“ 111111”。

赞美一些?分配成功?结果为真 ”分配结果是左侧的表达结果。