C/C で「0123」が「83」と印刷されるのはなぜですか?

DDD
リリース: 2024-11-14 18:24:02
オリジナル
927 人が閲覧しました

Why does

C/C で先頭にゼロがある数値定数を理解する

C/C では、数値定数の先頭に '0' を付けることができます基数または数値体系を示します。この接頭辞は、定数が 8 進数 (基数 8) の値であることを示します。

整数定数として '0123' を使用すると、コンパイラはそれを 8 進数の値として解釈します。 8 進数体系では、「123」は 10 進数値 83 (881 3) を表します。したがって、値を出力すると、123 ではなく 83 が出力されます。

この動作は、C および GCC などの C コンパイラ間で一貫しています。これは、接頭辞「0」が付いた浮動小数点定数にも適用されますが、変換規則は若干異なる場合があります。

数値定数の基数を明示的に指定するには、次の接頭辞を使用できます:

  • '0': 8 進数 (基数 8)
  • '0x' または '0X': 16 進数(基数 16)
  • 接頭辞なし: 10 進数 (基数 10)

たとえば、10 進数値 123 を 8 進定数として表すには、「0123」を使用します。逆に、8 進数値 83 を 10 進定数として表すには、83 を使用します。

以上がC/C で「0123」が「83」と印刷されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート