【发布时间】:2015-08-23 12:26:42
【问题描述】:
编辑:^^^“重复”根本没有提到数组
EDIT2:坚持这是C,而不是C++,两种语言之间没有区别吗?!
这个问题最近一直困扰着我一段时间。 Google 搜索一无所获。
所以我有这个示例 C++ 代码的 sn-p:
int factors[100]; /* note this is not initialized */
int number = /* less than 100 */ 10;
for (int i = 0; i < number; i ++) {
factors[i] = 1;
}
for (int i = 0; i < 100; i ++) {
std::cout << factors[i] << std::endl;
}
输出是(向下滚动到底部)
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1640775680
32767
114023525
624860211
174064279
236792104
-1027703263
587262357
1599638600
32767
17
0
1
0
6778984
1
1640935824
32767
1599638352
32767
1640780406
32767
1599638384
32767
1599638384
32767
1
0
1599638408
32767
6778880
1
1640776264
32767
1599638424
32767
0
0
0
0
0
0
0
0
0
0
为什么不是十个 1 或十个 1 和九十个 0,为什么有这么多看似随机的(可能与 2 的幂有关?)数字?我认为这可能与内存分配或其他东西有关,但我只是一个初学者,我还没有接触到这些东西。
【问题讨论】:
-
就
int factors[100] = {0}; -
不要让它困扰你。别担心,使用
std::vector,祝你快乐! -
@PaulMcKenzie:即使这样也不能保证。尽管 C++ 标准不使用该术语,但 C 标准讨论了仅通过尝试读取未初始化的值就可以做奇怪事情(如产生信号或关闭程序)的值。
-
@raumaankidwai ""duplicate" 根本没有提到数组" 而且您观察到的行为与数组无关,并在欺骗中进行了解释。
-
@BaummitAugen,我认为是时候放弃这里了。不会教的人就无法教......