繁体   English   中英

为什么在 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 += a[i]; 当您从未初始化count时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM