プログラミングの領域では、接頭辞がゼロの数値は興味深い動作を示すことがあります。 Visual Studio 2013 の例を使用して、詳細を詳しく見てみましょう。
次のコード スニペットを考えてみましょう:
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
接頭辞ゼロの数値の特別な処理
コンパイラは、接頭辞ゼロの数値を、 context:
00016 および05016
代入 int i = 00016;これは、C 標準に従って無効であっても、コンパイラは先頭のゼロを余分な 8 進数として扱うため、i == 14 に解決されます。
同様に、int i = 05016;コンパイラーは次のように解釈するため、 i == 2574 が返されます。
08 によるコンパイル エラー
0 で始まり、0 ~ 7 以外の数字が続く整数リテラル (08 など) はコンパイルをトリガーします。コンパイラはこれが 8 進数であると想定していますが、8 は有効な 8 進数ではないため、エラーが発生します。数字。
以上がC で接頭辞ゼロの数値が予期しない動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。