问题描述
我是编程新手,所以请尽可能简单地写下您的答案。我用 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;
不是代数规则,它是在语句序列中的那个点计算的语句。
只需在输入后执行即可。
,在第一个示例中,您在初始化 sum
和 a
之前初始化 b
变量,因此在初始化之前,a
和 b
将包含一些垃圾值,这就是为什么你得到输出 16 垃圾值可以是任何东西。只需在 a
和 b
变量有一些用户输入值后初始化您的 sum 变量。
如果你正在做一些加法,那么用零 sum
初始化你的结果变量 (sum=0
) 是一个好习惯,这样它也不包含任何垃圾值
使用时
int sum = a + b;
sum
初始化为 a + b
的计算结果。在该语句之后设置 sum
和 a
的值时,b
的值不会改变。在您的情况下,a
和 b
都没有在该语句之前初始化。因此,它会导致未定义的行为。
您的程序的第二个版本可以正常工作,因为您在 a + b
和 sum
已从用户输入分配值后将 a
分配给 b
。