【发布时间】:2018-04-27 04:31:07
【问题描述】:
我偶然运行了这段代码,当我把任何东西作为答案时,它显示我是正确的。我知道我们必须把 ans 放在 YES 和 yay 之前,但是这段代码也被编译了,正如我提到的,如果我把任何单词作为输入输出是正确的:
string ans;
cin >> ans;
if(ans == "yes" || "YES" || "yay") {
cout << "Correct";
}else {
cout << "Incorrect";
}
【问题讨论】:
-
布尔运算符不是这样工作的。他们所做的只是获取两个布尔值(真或假)并返回一个布尔值。这是他们唯一做的事情。
-
任何非零都是真的。
"YES"总是正确的。"yay"总是正确的。您忘记将它们与某些东西进行比较。 -
应该在某个地方被骗了。
-
@Shahryar downvotes 很可能是因为这个问题每隔一天被问一次,并且通过处理声明并考虑operator precedence 很容易解释。我不会对这个投反对票,因为就像我在上面所说的那样,网络搜索真的很难。
-
有人应该提出一个规范的“为什么我与多个值的比较总是返回真”的问题。