error C2041: illegal digit '9' for base '8'

因爲在C語言裏面,以數字0打頭的數字串被解釋爲8進制數,由於8進制數中最大的數字是7(就像10進制中最大的數字是9一樣),而09被解釋成爲8進制數顯然不對,所以error說9是在8進制下是非法數字。注意到02,06,07等顯然沒有問題,這些數字都小於等於7。要解決這個問題並不難,把09改成0x09就可以了,0x09是以0x打頭,C語言解釋成16進制數,就是說現在允許出現在某一數位上的最大數字是F(16進制下表示10進制的15),9顯然符合要求。其實這樣的寫法沒太大作用,printf打印的時候不會打印出打頭的0的,對於02,05,07之類倒還可以通過%#o說明符做到,但是0x09辦不到,建議把年月日都聲明爲字符串(printf裏面相應的%d改成%s)。當然還有其他辦法,不過這個是最直接的。

error C2041: illegal digit '8' for base '8'  就是說8在八進制下是非法數字。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章