C++程序无法进入if条件:输入正确密码仍提示错误
问题原因与解决方案
核心问题:C++中以
0开头的整数字面量会被解析为八进制数,而非十进制。
你的代码里0310是八进制,转换为十进制是200,但你输入的0310会被std::cin当作十进制310读取,两者数值不相等,导致判断失败。解决方案1(用十进制数值):
把所有0310改为310,确保代码里的字面量和输入的十进制数值一致,修改后的代码如下:#include <iostream> int num; void enter_code(int passcode) { std::string secret_knowledge = "E=mc2"; if (passcode == 310) { std::cout << secret_knowledge << "\n"; } else { std::cout << "Sorry, incorrect!\n"; } } int main() { std::cout <<"Enter pass\n"; std::cin >>num; if(num==310) { enter_code(310); } else{ enter_code(num); } }解决方案2(用字符串匹配前导0):
如果你需要密码必须包含前导0(即输入"0310"而非310),则应使用std::string类型存储输入,直接匹配字符串内容,代码示例:#include <iostream> #include <string> std::string num; void enter_code(const std::string& passcode) { std::string secret_knowledge = "E=mc2"; if (passcode == "0310") { std::cout << secret_knowledge << "\n"; } else { std::cout << "Sorry, incorrect!\n"; } } int main() { std::cout <<"Enter pass\n"; std::cin >>num; enter_code(num); }
内容的提问来源于stack exchange,提问作者rit25
相关产品推荐
相关产品推荐

