我可以在 if 语句中使用"x=2"作为参数吗?
can I use "x=2" as an argument inside an if statement?
所以我刚刚做了一个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++运行代码,它给了我语法错误,建议我在赋值周围加括号。可能是某些编译器更挑剔吗??
int
到bool
的转换:
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.
相关文章:
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- C++如何在 switch 语句中放置两个参数
- C++:关于for语句和参数的一般问题
- clang 格式堆叠所有 if 语句参数,如果它们太长
- 如何仅在语句匹配时才发送参数到函数?
- sqlite3 c 函数:插入语句作为参数时未执行
- 如果有多个参数的语句需要是真实的
- 如何基于模板变量参数多次扩展语句
- 递归可变参数函数调用对简单 if.else 语句的性能
- 在1语句中传递一个自定义函数作为模板参数
- 我可以在 if 语句中使用"x=2"作为参数吗?
- 为什么在语句"std::cout << std::endl;"中使用时需要命名空间限定,给定依赖于参数的查找?
- C++ 中开关语句中的参数函数
- 在for语句参数内部的C/C++算术运算中
- 为什么if语句中未定义的参数不会导致segfault或其他错误
- 如何避免由于模板参数而导致C++中的大型switch语句
- 重用返回语句或按参数引用返回
- 如何启动具有许多布尔参数的函数模板,而不使用 2^n if 语句
- 什么样的参数可以在返回语句中自动移动
- Fortran 的参数语句是否与 C/C++ 的 #define 语句相似?