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"应该分配成功.但结果只是第一次执行....
为什么?
一些评论?这似乎很狡猾,在这种情况下是不正确的.
operator=on int的结果是已分配的值.在这种情况下a = 5会导致5与a = 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.
的结果a=5是5和的结果a=0是0,因此您的程序类似于:
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”。
“ 赞美一些?分配成功?结果为真 ”分配结果是左侧的表达结果。