我可以在 if 语句中使用"x=2"作为参数吗?

can I use "x=2" as an argument inside an if statement?

本文关键字:参数 语句 if 我可以      更新时间:2023-10-16

所以我刚刚做了一个CS101 C++测试,这是问题之一:

int x=5;
if(x=2)
cout <<"this is true"<<endl;
else
cout <<"this is false"<<endl;
cout <<"this is all folks"<<endl;

下面给出了可能的输出的选择

a. this is true
b. this is false
c. this is true
this is false
d. this is true
this is all folks
e. None of the above

现在我注意到if语句正在测试一个赋值,所以我圈出了e。),因为我认为输出应该是语法错误。我不认为一项作业的评价是正确的或错误的。教练把我记错了。原因是大于0的参数为true。我告诉教授,这是不可能的,除非x=2用括号括起来。x=2本身不是对的,也不是错的。然后老师说,我们不应该期望测试或测验中的代码是可运行的——测试的是逻辑而不是语法。但逻辑上x=2既不是真的也不是假的,对吧???

我不是在争论这些观点;我只错了其中的一个。但老师坚持认为问答题写得正确,并结束了对话。我觉得教练不喜欢我在这个问题上质问她。。。她相当粗鲁地对我不屑一顾。无论如何,我使用vim/g++运行代码,它给了我语法错误,建议我在赋值周围加括号。可能是某些编译器更挑剔吗??

是:intbool的转换:
if(x=2) //2 is non 0 converts to true

因此,它将打印this is true。A和D是唯一剩下的选择。因为

else
cout <<"this is false"<<endl;
cout <<"this is all folks"<<endl; //not included in `else`, will print no matter what

this is all folks也将打印。

正确答案是D.