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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:05