首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言二維數組初始化時空花括號的合法性

     編輯:程式設計綜合問答

標準規定

C99 標準允許 指定初始化器 留空,但 空的花括號 {} 作為子聚合初始化器在 C89/C90 中是非法的,屬於編譯器擴展。

編譯器差異

  • VC6.0:嚴格遵循 C89,報錯 int b[][4]={{0,0,3},{},{0,10}}; 中的 {}。
  • VS2010+ / GCC:作為擴展支持空初始化器,視為該行全 0。

建議寫法

為移植性,顯式填 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

結論

書中示例可能針對寬鬆編譯器;習題測試環境嚴格。實際開發避免空 {},顯式初始化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved