微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

简单的 C++ 计算器总是输出 16

如何解决简单的 C++ 计算器总是输出 16

我是编程新手,所以请尽可能简单地写下您的答案。我用 C++ 做了一个简单的计算器。它应该添加 2 个数字,但由于某种原因,无论数字如何,输出始终为 16。谁可以给我解释一下这个?这是代码

#include <iostream>

using namespace std;

int main()
{
    int a;
    int b;
    int sum = a + b;

    cout << "Enter a number: ";
    cin >> a;

    cout << "Enter a second number: ";
    cin >> b;

    cout << sum;

    return 0;
}

但是,当我这样做时(先创建 int sum,然后再分配它),它会起作用:

#include <iostream>

using namespace std;

int main()
{
    int a;
    int b;
    int sum;

    cout << "Enter a number: ";
    cin >> a;

    cout << "Enter a second number: ";
    cin >> b;

    sum = a + b;

    cout << sum;

    return 0;
}

解决方法

int sum = a + b;

不是代数规则,它是在语句序列中的那个点计算的语句。

只需在输入后执行即可。

,

在第一个示例中,您在初始化 suma 之前初始化 b 变量,因此在初始化之前,ab将包含一些垃圾值,这就是为什么你得到输出 16 垃圾值可以是任何东西。只需在 ab 变量有一些用户输入值后初始化您的 sum 变量。

如果你正在做一些加法,那么用零 sum 初始化你的结果变量 (sum=0) 是一个好习惯,这样它也不包含任何垃圾值

,

使用时

int sum = a + b;

sum 初始化为 a + b 的计算结果。在该语句之后设置 suma 的值时,b 的值不会改变。在您的情况下,ab 都没有在该语句之前初始化。因此,它会导致未定义的行为。

您的程序的第二个版本可以正常工作,因为您在 a + bsum 已从用户输入分配值后将 a 分配给 b

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。