You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中逻辑或(OR)运算符的异常行为技术咨询

为什么你的C++代码无论输入什么都输出“Correct”?

嘿,这个问题太常见了,很多刚接触C++的开发者都会踩这个坑!我来给你掰扯清楚背后的原因~

先看你写的这段代码:

string ans; cin >> ans; 
if(ans == "yes" || "YES" || "yay") { 
    cout << "Correct"; 
}else { 
    cout << "Incorrect"; 
}

问题出在逻辑判断的写法上

你可能以为||是把几个判断条件连起来,检查ans是否等于其中任意一个字符串,但实际上C++里的逻辑或||要求两边都是布尔表达式。

当你写"YES"或者"yay"的时候,这些字符串字面量会被编译器当成const char*类型的指针。在布尔语境下,非空指针都会被评估为true——而这些字符串字面量肯定不是空指针,所以不管前面的ans == "yes"结果是啥,整个if条件都会变成true || true || true,自然永远执行cout << "Correct"那部分。

正确的写法应该是这样

你需要给每个字符串都加上完整的判断,确保每个||两边都是ans == 某个字符串的布尔表达式:

string ans; cin >> ans; 
if(ans == "yes" || ans == "YES" || ans == "yay") { 
    cout << "Correct"; 
}else { 
    cout << "Incorrect"; 
}

这样修改后,代码就会正确检查输入的ans是否等于这三个字符串中的任意一个,完全符合你的预期啦。

内容的提问来源于stack exchange,提问作者Shahryar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:54:59