【问题标题】:If an integer array is filled partially, why is the element after the last filled integer, '1'? (C++)如果一个整数数组被部分填充,为什么最后一个填充整数之后的元素是'1'? (C++)
【发布时间】:2023-03-25 15:30:01
【问题描述】:

我取了一个大整数数组并部分填充了它。然后我尝试将它打印到我输入的整数。但我不小心在最后输入的整数之后也打印出了元素。我在两次执行后才意识到我的错误,令人惊讶的是,每次都输出了一个额外的“1”。当我在最后一个输入的整数之后打印出两个元素时,结果是'1'和一个随机整数。我知道随机整数可能是 ram 中已经存在的垃圾值,但是“1”呢?这是我的疑问。

这是我的代码:

#include <iostream>
using namespace std;
int main()
{
  int Arr[100], i, n; //declarations

  cout<<"Enter the number of array elements!"<<endl;
  cin>>n;
  cout<<"Enter the elements of the array"<<endl;
  for(i=0; i<n; ++i) //Reading in array elements
  cin>>Arr[i];

  cout<<"Elements of the array are: (including arr[n] and arr[n+1]) "<<endl; //Debugging
  for(i=0;i<n+2;i++)
  cout<<Arr[i]<<"\t";
  
  return 0;  
}

这是执行的示例结果!

示例 1

示例 2

【问题讨论】:

    标签: c++ arrays input integer element


    【解决方案1】:

    数组中任何未初始化的单元格的行为都与任何未初始化的 int 变量相同:

    它将在该处发生的最后一次操作的内存中保存一个随机垃圾值或某种“剩余”...

    【讨论】:

    • 但是在最后输入的整数之后总是'1',而'1'之后的总是一个垃圾值。
    • 我的问题是为什么它总是在最后输入的整数之后是“1”,为什么它不是垃圾值。抱歉,如果问题不清楚
    • @Humble_Snowman 程序打印“1”的事实是侥幸。您的所有变量和整个数组都未初始化并没有帮助。当我运行该程序时,我在两个过去的打印中都会得到垃圾。
    • 我想这与编译器有关。我想我正在使用 gcc,但我不确定,因为我没有安装编译器,而是让 geany 为我编译它。
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多