内部表現
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/14 01:24 UTC 版)
char型のサイズは常に1バイトであることがC/C++規格で保証される。つまり、sizeof(char) == 1は常に真である。 一方、wchar_t 型は C および C++ 双方の標準規格において、符号付きの場合は少なくとも-127から+127まで、符号無しの場合は少なくとも0から255までの範囲を表現できる数値型、ということのみ定められている(少なくともchar型と同じ大きさが必要)。charがASCIIであるとは限らなかったり、floatやdoubleがIEEE 754の単精度・倍精度であるとは限らなかったりすることと同様に、wchar_tの内部表現もUnicodeである必要はない。本来はCode Set Independent(符号化集合に独立)なのである。 wchar_t 型のサイズと符号化形式は、例えばWindowsでは2バイト (16ビット) のUTF-16であり、LinuxやmacOSでは4バイト (32ビット) のUTF-32である。しかし、その他の環境でもUnicodeを用いた符号化形式であると誤解されて、あるいは仮定してプログラムが作られることがある[要出典]。そのようなプログラムは、Unicodeを用いた符号化形式とは限らない一般のUnixなどへの移植の際に問題が表面化する。なお、C99より、wchar_tがUnicodeと互換性のある場合、__STDC_ISO_10646__が事前定義されると定められている。
※この「内部表現」の解説は、「ワイド文字」の解説の一部です。
「内部表現」を含む「ワイド文字」の記事については、「ワイド文字」の概要を参照ください。
- 内部表現のページへのリンク