CとC++ではmulticharacter literal
: 'c' ではない (型整数C言語と文字C++では「tralivali」(型整数!)
enum
{
ActionLeft = 'left',
ActionRight = 'right',
ActionForward = 'forward',
ActionBackward = 'backward'
};
スタンダードは言う:
C99 6.4.4.4p10: 「複数の文字 (例: 'ab') を含む整数文字定数の値、または 1 バイト実行文字にマップされない文字またはエスケープ シーケンスを含む整数文字定数の値は、実装定義です。」
私は、それらが広く使われていることを発見しましたC4エンジンしかし、プラットフォームに依存しないシリアル化について話しているとき、それらは安全ではないと思います。文字列のように見えるため、混乱を招くこともあります。では、マルチ文字リテラルの使用範囲はどこでしょうか。何かに役立つのでしょうか。C++ では、C コードとの互換性のためだけに使用されているのでしょうか。行くオペレーターか否か?
ベストアンサー1
メモリ ダンプ内の値を簡単に選択できるようになります。
例:
enum state { waiting, running, stopped };
対
enum state { waiting = 'wait', running = 'run.', stopped = 'stop' };
次のステートメントの後のメモリ ダンプ:
s = stopped;
次のようになります:
00 00 00 02 . . . .
最初のケースでは、
73 74 6F 70 s t o p
複数文字のリテラルを使用します。(もちろん、'stop' と表示されるか 'pots' と表示されるかはバイト順序によって異なります)