【发布时间】:2016-08-25 19:16:32
【问题描述】:
我很好奇。当我尝试打印这些未定义的值时,它们是如何被放到这里的?
我认为未定义数组的值等于 0。
代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
// your code goes here
int log[][4];
int addOne=0;
for(int i=0;i<7;i++)
{
log[addOne][0]=11+i;
log[addOne][1]=11+i;
//log[addOne][2]=11+i;
log[addOne++][3]=11+i;
}
for(int i=0;i<11;i++)
{
printf("log[%d][0] = %d\n", i, log[i][0]);
printf("log[%d][1] = %d\n", i, log[i][1]);
printf("log[%d][2] = %d\n", i, log[i][2]);
printf("log[%d][3] = %d\n", i, log[i][3]);
}
return 0;
}
输出:
log[0][0] = 11
log[0][1] = 11
log[0][2] = 1
log[0][3] = 11
log[1][0] = 12
log[1][1] = 12
log[1][2] = -1217403463
log[1][3] = 12
log[2][0] = 13
log[2][1] = 13
log[2][2] = -1081953076
log[2][3] = 13
log[3][0] = 14
log[3][1] = 14
log[3][2] = -1081953088
log[3][3] = 14
log[4][0] = 15
log[4][1] = 15
log[4][2] = -1216726312
log[4][3] = 15
log[5][0] = 16
log[5][1] = 16
log[5][2] = -1219603196
log[5][3] = 16
log[6][0] = 17
log[6][1] = 17
log[6][2] = 6
log[6][3] = 17
log[7][0] = -1216729360
log[7][1] = -1216729468
log[7][2] = -1081952888
log[7][3] = -1217105850
log[8][0] = -1216726312
log[8][1] = -1216764868
log[8][2] = -1216758952
log[8][3] = 0
log[9][0] = -1217100393
log[9][1] = -1216548864
log[9][2] = -1216546512
log[9][3] = 1
log[10][0] = -1081952912
log[10][1] = -1216623457
log[10][2] = -1216546072
log[10][3] = -1217997256
有没有办法为每个索引初始化 0 值?
【问题讨论】:
-
您使用的是 C 还是 C++?
int log[][4];should not even compile 在 C++ 中。 -
它也不会在 C 中编译。
-
@iharob:嗯,他们有没有在 C 中添加
namespace?好消息 ;-) -
@iharob 您不能在不指定大小或使用初始化程序的情况下声明数组。您通过添加初始化程序在答案的第一个 sn-p 中“修复”它,但在此过程中创建了一个大小为 1 的数组,即
int log[1][4] -
@user3386109 是的,您是对的,我明白您的意思是因为无法确定数组的大小。我通常从不考虑这个,因为这当然没有意义。但我在回答中添加了一条评论提到它。
标签: c++ multidimensional-array