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

C++入门计算器结果始终为0问题咨询:含代码排查需求

问题排查与解决

老哥,你的计算器程序结果始终为0的核心原因很明确,咱们先拆解问题:

核心错误:Switch分支完全没被触发!

你定义的processing是int类型,输入的是整数1/2/3/4,但switch的case里写的是'1'、'2'这类字符常量。字符'1'的ASCII码是49,和整数1完全不是同一个值,所以程序永远不会进入任何计算分支,result就一直保持你设置的初始值0,这就是结果不对的根源!

把case里的单引号去掉,改成整数常量就好了:

switch (processing) {
    case 1:  // 去掉单引号
        result = nmb1 + nmb2;
        break;
    // 其他case同理改成2、3、4
}

还有个编译级错误:变量声明不匹配

你原代码里声明了两次int nmb;,但后面输入时用的是nmb1和nmb2——这两个变量根本没被声明!正常编译器会直接报错说nmb1、nmb2未定义,你得把变量声明改成:

int nmb1;
int nmb2;

关于整数变量初始化的问题

不是“必须”初始化所有整数变量,但局部变量(比如main函数里的这些变量)如果不初始化,它的值是未定义的随机垃圾值,使用这种变量会导致不可预测的行为(比如程序崩溃、输出奇怪的值),所以强烈建议手动初始化局部变量。

而全局变量、静态局部变量会被编译器默认初始化为0,不需要手动赋值。

修正后的完整代码

#include <iostream>
using namespace std;

int main() {
    int result = 0;
    int processing;
    int nmb1;
    int nmb2;
    char wait;

    cout << "Operation:" << endl;
    cout << "1 for +" << endl;
    cout << "2 for -" << endl;
    cout << "3 for *" << endl;
    cout << "4 for /" << endl;
    cin >> processing;

    cout << "Type both numbers:" << endl;
    cout << "1.nmb:" << endl;
    cin >> nmb1;
    cout << "2.nmb:" << endl;
    cin >> nmb2;

    switch (processing) {
        case 1:
            result = nmb1 + nmb2;
            break;
        case 2:
            result = nmb1 - nmb2;
            break;
        case 3:
            result = nmb1 * nmb2;
            break;
        case 4:
            if (nmb2 == 0) {
                cout << "Don't do that!";
                break;
            } else {
                result = nmb1 / nmb2;
                break;
            }
        default:
            cout << "Invalid operation! Please enter 1-4." << endl;
            break;
    }

    cout << "result = " << result << endl;
    cin >> wait;
    return 0;
}

(注:别忘了加<iostream>头文件,原代码里没写,不然cout、cin无法正常使用;另外加了default分支处理无效输入,程序更健壮)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:58:03