gpt4 book ai didi

c++ - 除非所有字段都初始化为 0,否则 int 数组会给出疯狂的值,为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:28 25 4
gpt4 key购买 nike

int TwoThrows();


int main(){

int Throws, Throw, Frequency[13]={0,0,0,0,0,0,0,0,0,0,0,0,0};
randomize();


cout << "\nThis program simulates throws of two dice.";
cout << "\n\nHow many throws : ";
cin >> Throws;



// Calls TwoThrows and saves in Frequency by value
for(int I=0; I<Throws; I++){
Throw=TwoThrows(); //2-12
Frequency[Throw]++; //2-12

}

// Prints array:
for(int I=0; I<11; I++){
cout << I+2 << ":\t" << Frequency[I+2] << "\n";

}

return 0;
}

int TwoThrows(){
unsigned int I=(random(6)+1)+(random(6)+1);

return I;

}

这打印:

2: 13173:27244:41455:55136:70567: 83438: 69829:558010:417611: 277612: 1388

太好了。

但是,我想知道的是,为什么我必须将数组设置为{0,0,0,0,0,0,0,0,0,0,0,0,0}?

如果我不这样做;我得到:

2:306268683:16382334:8445452955:16:97:42025108: 41991979: 84455575710:311:420257412: 2130567168

最佳答案

如果您不初始化数组,然后继续递增其元素,技术上这是 undefined behaviour .

实际发生的情况是,当 main() 启动时,数组的元素会获取恰好在堆栈上的任何值。

关于c++ - 除非所有字段都初始化为 0,否则 int 数组会给出疯狂的值,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com