2011-06-30 8 views
2

PNG仕様を読んだ後、少し驚いていました。私は文字リテラルが0x41のようなバイナリ値でハードコーディングされるべきである(プログラマフレンドリーな) 'A'を読んだことがあります。問題は、異なるリテラルキャラクタセットを持つ異なるシステム上で、コンパイル時に文字リテラルが別々にエンコードされることが原因と考えられます。ASCIIおよびEBCDICシステムのC/C++文字リテラル

私は友人に尋ねて、C++標準(ISO/IEC 14882:1998/e)を読んでいましたが、会話がコンパイルに使用するシステムに依存しているか、文字セット(ASCIIのような)はこれまでですか?

ご回答ありがとうございます。

答えて

4

文字定数'A'がターゲット環境で適切にエンコードされていることを確認するには、プログラマフレンドリなバージョンが唯一の方法です。 0x41を使用すると、値が65のみであることが保証されます。

EBCDICシステムは、ありがたいことに稀で、希少化しているので、この区別はかなり面白いものです。しかし、わかりやすいプログラムは、有意義かつ自然に書かれています。抽象的ではない。

関連する問題