奇怪的数字随机出现在输出中。(C++)
Bizzare numbers appears randomly in output.(C++)
我的代码:
#include <iostream>
using namespace std;
int main(){
int a[500];
int value;
for(int i=0;i<500;i++){
cout<<"Please Enter a value (0-100):";
cin>>value;
if (value>=0 && value<=100){
a[i]=value;
}
else if(value<0){
break;
}
}
for(int i=0;i<5;i++){
cout<<a[i]<<" ";
}
}
输出样本:
Please Enter a value (0-100):10
Please Enter a value (0-100):12
Please Enter a value (0-100):5
Please Enter a value (0-100):-5
10 12 5 0 786432
--------------------------------
Process exited after 7.597 seconds with return value 0
Press any key to continue . . .
数组中有未给出的值。我不知道它们是如何定义的。请帮我解决这个问题。
注意:对我的错误表示抱歉。我还是新手
读取未初始化的变量是未定义的行为。您的数组 a
未初始化。未定义的行为意味着您的程序中可能发生任何事情,包括打印垃圾值。
我建议您阅读涵盖这些基础知识的 a good C++ book。
else if(value<0)
当此条件为真时,您将在 a[i]
中留下一个未初始化的值,这就是您所看到的。它也可以做一些完全不同的事情,因为读取未初始化的值会使您的程序具有未定义的行为。
用零初始化你的数组:int a[500]{};
您可以有一个索引来跟踪用户输入的项目数 (noOfItem),然后打印该数字。例如,
#include <iostream>
using namespace std;
int main(){
int a[500];
int value;
int noOfItem=0;
for(int i=0;i<500;i++){
cout<<"Please Enter a value (0-100):";
cin>>value;
if (value>=0 && value<=100){
a[i]=value;
noOfItem++;
}
else if(value<0){
break;
}
}
for(int i=0;i<noOfItem;i++){
cout<<a[i]<<" ";
}
}
您正在声明一个大小为 500 的数组,并使用 for 循环迭代进行初始化。
仅供参考,在 C++ 中,未初始化的数组将其所有值都保存为垃圾值……垃圾值只不过是一个随机数。
您可以使用以下代码将所有数组值初始化为零。,
int a[500] = {0};
我的代码:
#include <iostream>
using namespace std;
int main(){
int a[500];
int value;
for(int i=0;i<500;i++){
cout<<"Please Enter a value (0-100):";
cin>>value;
if (value>=0 && value<=100){
a[i]=value;
}
else if(value<0){
break;
}
}
for(int i=0;i<5;i++){
cout<<a[i]<<" ";
}
}
输出样本:
Please Enter a value (0-100):10
Please Enter a value (0-100):12
Please Enter a value (0-100):5
Please Enter a value (0-100):-5
10 12 5 0 786432
--------------------------------
Process exited after 7.597 seconds with return value 0
Press any key to continue . . .
数组中有未给出的值。我不知道它们是如何定义的。请帮我解决这个问题。
注意:对我的错误表示抱歉。我还是新手
读取未初始化的变量是未定义的行为。您的数组 a
未初始化。未定义的行为意味着您的程序中可能发生任何事情,包括打印垃圾值。
我建议您阅读涵盖这些基础知识的 a good C++ book。
else if(value<0)
当此条件为真时,您将在 a[i]
中留下一个未初始化的值,这就是您所看到的。它也可以做一些完全不同的事情,因为读取未初始化的值会使您的程序具有未定义的行为。
用零初始化你的数组:int a[500]{};
您可以有一个索引来跟踪用户输入的项目数 (noOfItem),然后打印该数字。例如,
#include <iostream>
using namespace std;
int main(){
int a[500];
int value;
int noOfItem=0;
for(int i=0;i<500;i++){
cout<<"Please Enter a value (0-100):";
cin>>value;
if (value>=0 && value<=100){
a[i]=value;
noOfItem++;
}
else if(value<0){
break;
}
}
for(int i=0;i<noOfItem;i++){
cout<<a[i]<<" ";
}
}
您正在声明一个大小为 500 的数组,并使用 for 循环迭代进行初始化。 仅供参考,在 C++ 中,未初始化的数组将其所有值都保存为垃圾值……垃圾值只不过是一个随机数。 您可以使用以下代码将所有数组值初始化为零。,
int a[500] = {0};