16進数の先頭に0xが付くのはなぜですか? 質問する

16進数の先頭に0xが付くのはなぜですか? 質問する

16 進数の先頭に が付くのはなぜですか0x? 先頭の使用法は理解できますが、 が選択された理由の意味がわかりません0x

ベストアンサー1

簡単に言うと、0パーサーに定数 (識別子/予約語ではない) を扱っていることを伝えます。数値の基数を指定するためにまだ何かが必要です。 はx任意の選択です。

長い話ですが、 60 年代に普及していたプログラミング数値システムは 10 進数と8 進数でした。メインフレームは 1 バイトあたり 12、18、24、または 36 ビットで、これは 3 = log2(8) で割り切れます。

BCPL言語は8 12348進数の構文を使用していました。ケン・トンプソンがBCPLからBを作成したとき、彼は0代わりに接頭辞を使用しました。これは素晴らしいことです。

  1. 整数定数は常に1つのトークンで構成されるようになりました。
  2. パーサーは定数があることをすぐに判断できます。
  3. パーサーは基底(0両方の基底で同じ)をすぐに判断できます。
  4. それは数学的に正当である(00005 == 05)、そして
  5. 貴重な特殊文字は必要ありません ( のように#123)。

C が B から作成されたとき、16 進数の必要性が生じました (PDP-11 には 16 ビットのワードと 8 ビットのバイトがありました)。上記のすべての点は依然として有効でした。他のマシンでは 8 進数が依然として必要であったため、0x任意に選択されました (00または、0hおそらく扱いにくいとして除外されました)。

C# は C の子孫なので、構文を継承します。

Cの歴史の詳細については、デニス・M・リッチーのページ

おすすめ記事