所以我刚刚参加了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;
Run Code Online (Sandbox Code Playgroud)
下面给出了可能输出的选择
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
Run Code Online (Sandbox Code Playgroud)
现在我注意到if语句正在测试一个赋值所以我圈了e.)因为我认为输出应该是语法错误.我不认为作业不能被评价为真或假.导师标记我错了.原因是大于0的参数为真.我告诉教授,除非x = 2被圆括号包围,否则这是不可能的.x = 2本身不是真或假.然后教师说我们不应该期望测试或测验上的代码可以运行逻辑正在测试而不是语法.但逻辑上x = 2既不是真的也不是假的,对吧???
我不是在争论这些观点; 我错了两个中只有一个.但是教练坚持认为测验问题写得正确并结束了对话.我不认为导师很感激我对此提出质疑......她非常粗鲁地把我拉了过来.无论如何我使用vim/g ++运行代码并且它给了我语法错误,建议我在括号中添加括号.是不是有些编译器更挑剔?