2015-09-15 8 views
6

C++は文字リテラルの順序付けについてどのような保証をしていますか? 基本的なソースキャラクタセットに明確な文字の順序がありますか? (例えば真であることが保証'a' < 'z'?どう'A' < 'z'程度?)C++は文字リテラルの順序付けについてどのような保証をしていますか?

+0

本当に悪い実装では、 ''z '==' a '+ 25'と_still_に' 'b' <'' a''があります。私は、EBCDICとSMSを扱っていても、これはむしろ不十分だと考えています。 – MSalters

+1

保証がないという事実は、「最も可能性がある」いくつかの実装にサポートを張っておくことは、時には良い考えであることを再び示しています。私の意見では、Qtは 'sizeof(int)== 4'を持つ実装に固執しています。サポートしたいすべてのコンパイラはこれを保証しますが、もちろんそうではありません。人生をもっと簡単にすることができます。しかし、慎重に、あなたが執着している実装を知っているだけでなく、アプリケーションに依存するそのような制限を考慮する必要があります。 – leemes

答えて

10

標準のみ2.3[lex.charset]ドラフトC++ 11標準セクションから、小数点以下の桁9から0の順序の保証を提供します:桁の上記リスト中の0の後の両方のソースと実行基本的な文字セットで

、 の値は各文字が前の値より 1大きくなければなりません。

とそうでないと言う(強調鉱山):

基本実行文字セットと基本的な実行 ワイド文字セットが各基本 ソース文字セットのすべてのメンバーを含まなければなりません、警告を表す制御文字、 バックスペース、およびキャリッジリターンに加えて、ヌル文字(それぞれ、 ヌルワイド文字)です。その表現はすべてゼロビットです。各 基本実行文字セットの場合、のメンバーの値は、 であり、互いに負ではなく、別のものとなります

注:EBCDICには、非連続の文字セットがあります。

関連する問題