ホームページ > バックエンド開発 > C++ > C/C で「0123」が 83 に等しいのはなぜですか?

C/C で「0123」が 83 に等しいのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-17 04:55:03
オリジナル
279 人が閲覧しました

Why does '0123' equal 83 in C/C  ?

C/C の数値定数プレフィックスについて

C/C で数値定数を記述する場合、数値の前に使用されるプレフィックスは重要な意味を持ちます解釈された値が変更される可能性があります。このような接頭辞の 1 つは '0' で、これは 8 進 (base-8) 定数を表します。

数値定数 '0123' が整数変数に割り当てられた場合を考えてみましょう。基数 10 (10 進数) では、この値は確かに 123 を表します。ただし、接頭辞「0」が付いているため、8 進定数として解釈されます。

8 進数の 2 進表現では、各桁は次のようになります。特定の値:

  • 0: 000
  • 1: 001
  • 2: 010
  • 3: 011
  • 4 : 100
  • 5: 101
  • 6: 110
  • 7: 111

「0123」は 8 進数の定数なので、次のように変換できます。各桁を 2 進数に対応させます:

  • 0: 000
  • 1: 001
  • 2: 010
  • 3: 011

これらの 2 進数を連結すると、000001001011 が得られます。これを基数 10 (10 進数) に変換すると、値 83 が得られます。

したがって、C/C の数値定数の先頭に「0」は 8 進定数を意味し、値はそれに応じて解釈されます。この動作は、C と GCC コンパイラを使用した C の両方で一貫しており、浮動小数点定数でも一貫しています。

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

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