[英]Don't understand the output of this C program
這是代碼:
#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編譯代碼。
value[8]
從未初始化,因此其內容未定義,可以是任何內容。
同樣適用於value[1]
, value[4]
, value[6]
和value[7]
。 但他們恰好是零。
在沒有初始化程序的情況下聲明自動存儲持續時間的對象在分配給它們之前具有不確定的值。 從技術上講,它會導致未定義的行為使用具有不確定值的對象的值(例如,打印int)。
如果要將陣列初始化為零,則需要提供初始化程序。 例如
int value[10] = {0};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.