cのプログラムで日付を数字2文字で定義していると8と9で下記のエラーが発生して戸惑いました。
int day = 08;
error: invalid digit "8" in octal constant
int day = 09;
error: invalid digit "9" in octal constant
調べたところ、c言語では0始まりの表示は8進数定数(octal constant)と解釈されると分かりました。
8進数表記で利用できるのは「01234567」なので8と9はそれから外れるためエラーになりました。
0始まりの桁表示を利用して01なら動くからと油断すると、08 09 で動かなくなるので注意です。
参考
Whats wrong with array declaration: "invalid digit in octal constant"?
DCL18-C. 10 進値を指定するとき、整数定数を 0 で始めない
C 整数定数
0 件のコメント :
コメントを投稿