2

程序在 a[ch] 和 b[nech] 上向我发送 -858993460 值,为什么?我无法理解...如果我使用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();
 }
4

3 回答 3

3

你需要初始化你的数组

int m[3] = {0}
int a[3] = {0};
int b[3] = {0};

在不初始化数组的情况下,该值是堆栈中的随机值。

于 2012-11-12T11:05:06.317 回答
1

m[i]=a[ch]是未定义的行为,因为a它是一个未初始化的数组int

你永远不会读入a. 你期望的行为是什么?

于 2012-11-12T11:03:55.793 回答
0

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

于 2012-11-12T11:05:26.193 回答