我有这个代码偶然运行,当我把任何东西作为答案,它显示我是正确的.我知道我们必须在YES和yay之前放置ans,但是这个代码也被编译了,正如我提到的,如果我把任何单词作为输入输出是正确的:
string ans;
cin >> ans;
if(ans == "yes" || "YES" || "yay") {
cout << "Correct";
}else {
cout << "Incorrect";
}
Run Code Online (Sandbox Code Playgroud)
好的,这里是逻辑运算符的优先级(L-> R)和关联性:
(((ans == "yes") || "YES") || "yay")
因为与Python不同,C/C++ 没有链接.
第一:ans == "yes"- > str到str比较
第二:bool result of 1st || "YES"- > bool和str比较=总是truefor "YES"不是null
第3名:true || "YES"=总是true
因此,病情总是会true为"YES"和"yay"不为空.