5

C++03 2.2 文字セットからの引用:

「基本実行文字セットと基本実行ワイド文字セットには、それぞれ基本ソース文字セットのすべてのメンバーが含まれます。実行文字セットのメンバーの値は実装定義であり、追加のメンバーはすべてロケールです。明確な。"

これによると'A'、実行文字セットに属し、その値は実装定義です。65( 'A'10進数のASCIIコード)じゃないってこと?!

// Not always 65?
printf ("%d", 'A');

または、実行文字セットの文字のについて誤解がありますか?

4

2 に答える 2

1

したがって、標準では、「実行文字セット」が ASCII または ASCII 派生物以外のものであることを許可しています。1 つの例は、IBM が長い間使用していた EBCDIC 文字セットです (EBCDIC を使用するマシンはおそらくまだありますが、過去 10 ~ 15 年間に構築されたものはすべてそれを使用していないのではないかと思います)。EBCDIC の文字のエンコードは、ASCII とはまったく異なります。

したがって、「A」の値が特定の値であることをコードで期待することは、移植性がありません。失敗する他の「一般的な仮定」の山全体もあります-AZの間に「穴」はなく、「A」-「a」== 32はEBCDICでは両方とも偽です。少なくとも AZ の文字は正しい順序になっています。;)

于 2013-05-02T14:36:50.003 に答える