得到-858993460作为结果c ++

时间:2012-11-12 11:02:45

标签: c++

程序发送给我-858993460值[ch]和b [n​​ech]为什么?我无法理解...如果我在cout<<m[i]使用cout<<a[ch]<<endl;它工作得很好...向我显示偶数和赔率但当我尝试将它们发送到另一个数组时,价值出错(我需要另外两个数组a [ch]和b [n​​ech])

#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();
 }

3 个答案:

答案 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)

您没有在任何地方初始化ab的元素,因此它们具有相当多的随机初始值(例如您获得的-858993460)。