ホームページ > バックエンド開発 > C++ > C で先頭のゼロによって整数値が変更されるのはなぜですか?

C で先頭のゼロによって整数値が変更されるのはなぜですか?

Susan Sarandon
リリース: 2024-11-27 19:40:11
オリジナル
289 人が閲覧しました

Why Do Leading Zeros Change Integer Values in C  ?

整数の先頭ゼロの謎を解明する

Visual Studio 2013 で観察された動作は、整数を表す規則を反映しています。さまざまな基数、特に 10 進数、8 進数、および16 進数。

C の整数リテラルは、さまざまな基数を表すためにゼロから始めることができます。

  • 10 進数 (基数 10): 10 進数リテラルは、非-ゼロの数字。0 から 0 までの数字で構成されます。 9.
  • 8 進数 (基数 8): 8 進数リテラルは 0 で始まり、0 から 7 までの数字が続きます。
  • 16 進数 (基数 16): 16 進リテラルは 0x または 0X で始まり、0 から 0 までの数字で構成されます。 9 と文字 a から f (または A から F)。

この例では:

  • 07 は 8 進リテラルで、値 7 (in の 7) を表します。基数 10)。
  • 16 は値を表す 10 進リテラルです。 16.
  • 00016 は 8 進リテラルで、値 14 (基数 8 の 16) を表します。

08 を割り当てようとしたときにコンパイラ エラーが発生するのは、8 が有効な値ではないためです。 8 進数。 7 までのみ有効です。

00016 から 14 への変換の理由は、8 進数リテラルの先頭のゼロが、その数値が基数 8 であることを示すためです。コンパイラーは、各桁を乗算することによって変換を実行します。右から左へ、対応する 8 の累乗で計算します。

00016 の場合、これは次のように変換されます。 to:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14

したがって、観察された動作はコンパイラの結果です。 C の先頭の数字とさまざまな基数の規則に基づいた数値の解釈。

以上がC で先頭のゼロによって整数値が変更されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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