为什么我在 C++ 中添加数组元素时得到非常大的数字?
Why am i getting exremely large numbers when adding elements of an array in c++?
我试图添加数组的前 4 个数字。当我测试它时,我总是得到数字“4201077”,即使前 4 个数字是 1、2、3 和 4。当我尝试从不同的数字开始时,我得到一个略有不同的变化,例如“4201092”。
我究竟做错了什么?
代码:
int main(){
int a [10];
int count;
for (int i = 0; i < 10; i ++)
cin >> a[i];
int i = 0;
while ( i < 4){
count += a[i];
i++;
}
cout << count;
}
您永远不会初始化 count
来保存任何值。 count += a[i];
行从 count
读取,以便将 a[i]
添加到该值。在 C++ 中,读取未初始化的变量在大多数情况下是 未定义的行为,包括这个。因此,您的程序可能会做任何事情,包括(但不限于)打印错误结果、崩溃或什么都不做。
// You have:
int count;
// Replace with:
int count = 0;
始终打开所有编译器警告,并修复出现的所有警告。每个常用的编译器都会标记行 count += a[i];
并警告读取未初始化的变量。例如,gcc 是这样说的:
main.cpp: In function 'int main()':
main.cpp:14:14: warning: 'count' is used uninitialized in this function [-Wuninitialized]
14 | count += a[i];
| ~~~~~~^~~~~~~
读取未初始化的变量是 UB:https://en.cppreference.com/w/cpp/language/ub - 当您从未初始化 count
.
时,您可以使用 count += a[i];
执行此操作
我试图添加数组的前 4 个数字。当我测试它时,我总是得到数字“4201077”,即使前 4 个数字是 1、2、3 和 4。当我尝试从不同的数字开始时,我得到一个略有不同的变化,例如“4201092”。 我究竟做错了什么? 代码:
int main(){
int a [10];
int count;
for (int i = 0; i < 10; i ++)
cin >> a[i];
int i = 0;
while ( i < 4){
count += a[i];
i++;
}
cout << count;
}
您永远不会初始化 count
来保存任何值。 count += a[i];
行从 count
读取,以便将 a[i]
添加到该值。在 C++ 中,读取未初始化的变量在大多数情况下是 未定义的行为,包括这个。因此,您的程序可能会做任何事情,包括(但不限于)打印错误结果、崩溃或什么都不做。
// You have:
int count;
// Replace with:
int count = 0;
始终打开所有编译器警告,并修复出现的所有警告。每个常用的编译器都会标记行 count += a[i];
并警告读取未初始化的变量。例如,gcc 是这样说的:
main.cpp: In function 'int main()':
main.cpp:14:14: warning: 'count' is used uninitialized in this function [-Wuninitialized]
14 | count += a[i];
| ~~~~~~^~~~~~~
读取未初始化的变量是 UB:https://en.cppreference.com/w/cpp/language/ub - 当您从未初始化 count
.
count += a[i];
执行此操作