2

プログラムは、a [ch] ab[nech]に-858993460の値を送信します。なぜですか?? cout<<m[i]理解できません...代わりに使用するcout<<a[ch]<<endl;と正常に機能します...偶数とオッズが表示されますが、それらを別の配列に送信しようとすると、値が正しくなくなります(これらの別の2つの配列が必要です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

andの要素をどこでも初期化していないaためb、かなりランダムな初期値を持っています (たとえば、取得している -858993460 など)。

于 2012-11-12T11:05:26.193 に答える