程序发送给我-858993460值[ch]和b [nech]为什么?我无法理解...如果我在cout<<m[i]
使用cout<<a[ch]<<endl;
它工作得很好...向我显示偶数和赔率但当我尝试将它们发送到另一个数组时,价值出错(我需要另外两个数组a [ch]和b [nech])
#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>
#include <stdlib.h>
using namespace std;
int main()
{
int i,n;
int m[3], a[3]={0}, b[3]={0};
int ch=0, nech=0;
for(i=0; i<3; ++i)
{
cout<<i+1<<". Studenski fark. nomer: ";
do
{
cin>>m[i];
}
while(!(m[i]>=1e7 && m[i]<1e8));
if(m[i]%2==0)
{
m[i]==a[ch]; ch++;
//cout<<m[i]<<endl; "without the down 'fors' it works"
}
else
{
m[i]==b[nech]; nech++;
//cout<<m[i]<<endl; "without the down 'fors' it works"
}
}
cout<<"\nVsichki fakultetni nomera: "<<endl;
for(i=0; i<3; ++i)
cout<<m[i]<<"\t";
cout<<"Chetni fark nomera: \n";
if(ch!=0)
for(i=0;i<ch;i++)
cout<<a[ch]<<"\t"; //"with {0} on 'a' I receive 0 as result"
else
cout<<"nqma chetni fak nomera";
if(nech!=0)
for(i=0;i<nech;i++)
cout<<b[nech]<<"\t"; //"same here 0 as result with {b}"
else
cout<<"Nqma nechetni fak nomera";
getch();
}
答案 0 :(得分:3)
您需要初始化数组
int m[3] = {0}
int a[3] = {0};
int b[3] = {0};
在不初始化数组的情况下,该值是堆栈中的随机值。
答案 1 :(得分:1)
m[i]=a[ch]
是未定义的行为,因为a
是未初始化的int
数组。
你永远不会读到a
。您对此行为的期望是什么?
答案 2 :(得分:0)
您没有在任何地方初始化a
和b
的元素,因此它们具有相当多的随机初始值(例如您获得的-858993460)。