C99 標準允許 指定初始化器 留空,但 空的花括號 {} 作為子聚合初始化器在 C89/C90 中是非法的,屬於編譯器擴展。
int b[][4]={{0,0,3},{},{0,10}}; 中的 {}。為移植性,顯式填 0:
int b[][4] = {{0,0,3}, {0,0,0,0}, {0,10,0,0}}; // 明確列數
// 或
int b[][4] = {{0,0,3}, {0}, {0,10}}; // {0} 表示該行首元素 0,其余自動補 0
書中示例可能針對寬鬆編譯器;習題測試環境嚴格。實際開發避免空 {},顯式初始化。