char a[5];
scanf("%c%c", &a[1], &a[2]); // 只寫入 a[1], a[2]
a[3] = 'm';
printf("%c\n", a[4]); // a[4] 未初始化
? 的原因a[4] 為自動儲存期區域變數,內容為棧上隨機殘留值(不定值)。? 或 顯示。printf("a[4] = %d (0x%02X)\n", a[4], (unsigned char)a[4]);
// 觀察實際數值,通常非 '?' (ASCII 63)
char a[5] = {0}; // 全部歸零
// 或
memset(a, 0, sizeof(a));
字元陣列未初始化元素內容不定,輸出時終端機以 ? 替代不可列印字元。良習:定義陣列即初始化,避免未定義行為。