
十六進制轉八進制,我的思路是先轉為十進制,再轉為八進制,自己編譯器(DevC++)可以編譯出來,但是藍橋練習系統顯示編譯錯誤,請大佬指教!
uj5u.com熱心網友回復:
出錯資訊很明確,只要你不對陣列b進行初始化就行。可變長陣列的定義是運行期的事,初始化是編譯期的事,這樣寫代碼就好像光棍哥要預定一件婚紗~
uj5u.com熱心網友回復:
它的編譯器不支持C99,或者默認沒有啟用uj5u.com熱心網友回復:
樓上正解。編譯時應該添加:-std=c99uj5u.com熱心網友回復:
不是這樣哦。如果不支持C99,那么不應該出這樣的出錯資訊。
事實上變長陣列不能初始化正是C99說的。
uj5u.com熱心網友回復:
但是我陣列b不初始化,我下邊還要用它怎么辦?
uj5u.com熱心網友回復:
自己寫回圈賦值,或者memset都行啊。uj5u.com熱心網友回復:
初始化,又稱賦初值,英文initialize,和賦值完全不是一碼事。C語言規定它是編譯期動作。
而C99的變長陣列要到運行期才能確定它有多大,反過來說就是編譯期不知道它有多大,因此編譯期無法初始化。
這就是為什么全域陣列,static區域陣列都不能變長,就因為它們在編譯期有默認的初始化動作。
順理成章的,有初始化動作的普通區域陣列也就不能變長了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243719.html
標籤:C語言
下一篇:C/C++ 有關二維陣列的問題
