C/C で `0123` が 83 と評価されるのはなぜですか?

Barbara Streisand
リリース: 2024-11-18 10:13:02
オリジナル
706 人が閲覧しました

Why does `0123` evaluate to 83 in C/C  ?

C/C で数値定数の前に「0」を付ける

質問:

理由C/C で接頭辞「0」が付いた整数定数は、期待とは異なる値に評価されますか?たとえば、定数 '0123' を使用すると、値は 123 ではなく 83 になります。

答え:

C/C およびその他のプログラミング言語では、数値定数を使用できます。それらが表す数値の基数を示すために、異なる接頭辞を接頭辞として付けることができます。接頭辞「0」は、8 進数 (base 8) 定数を示します。

コンパイラは、接頭辞「0」が付いている数値定数を検出すると、それに続く数字を 8 進数として解釈します。 「0123」の場合、(0 8^3) (1 8^2) (2 8^1) (3 8^0) として扱われます。 10 進数で 83 と評価されます。

これは、「0」で始まる数値定数が 8 進数として扱われるという C/C 言語仕様と一致しています。このルールは、整数定数と浮動小数点定数の両方に適用されます。

C/C プログラムで数値データを正確に表現し、解釈するには、数値プレフィックスの役割を理解することが重要です。

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

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