下面的代码的输出:不明白这个C程序
#include <stdio.h>
int main (void)
{
int value[10];
int index;
value[0] = 197;
value[2] = -100;
value[5] = 350;
value[3] = value[0] + value[5];
value[9] = value[5]/10;
--value[2];
for(index = 0; index < 10; ++index)
printf("value[%i] = %i\n", index, value[index]);
return 0;
}
这里的输出时,编译:
value[0] = 197
value[1] = 0
value[2] = -101
value[3] = 547
value[4] = 0
value[5] = 350
value[6] = 0
value[7] = 0
value[8] = 1784505816
value[9] = 35
我不明白为什么值[8]返回1784505816? 不是值[8]应该是=值[6] =值[7] = 0?顺便说一下,我在Mac OS X Lion下通过gcc编译代码。
但是,如果你使用'int值[10] = {};',那么它们将是零初始化。 –
@ ChrisJester-Young:你的意思是'{0}'。这是一个C问题。 –
@CharlesBailey:+1哇,很好的电话。我发现'{}'是一个gcc扩展(当用'-pedantic'编译时,你会得到一个“警告:ISO C禁止空初始化括号”消息)。 (现在编辑我的评论为时已晚,唉。) –