- ベストアンサー
WCHAR_MAXがUnsignedでない?
Linux, BSD問わず、C/C++で、なぜWCHAR_MAXとWCHAR_MINはsignedな数で #defineされてるんでしょうか? wchar_tはunsigned intと等価なのに... どんな理由があるんでしょうか。それともただのバグ(そんな事ないと思いますが)?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://ja.wikipedia.org/wiki/%E3%83%AF%E3%82%A4%E3%83%89%E6%96%87%E5%AD%97 (これの「内部表現」を見てください) これを見る限りsignedかunsignedかは実装依存かと思われます。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
既に回答はありますが, 規格上も wchar_t は整数型 (「int型」ではない) であることしか保証されていません. 特に「符号付きか符号なしか」については, 規格では一切触れられていません.
質問者
お礼
ありがとうございます。signedかどうかは決められてないんですね。
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.1
>wchar_tはunsigned intと等価なのに... wchar_tはunsigned intと等価とは決まってませんけど。 FreeBSD 9だとwchar_tの定義は以下のようになってます(必要な部分だけ抜粋) typedef int __ct_rune_t; /* arg type for ctype funcs */ typedef __ct_rune_t __wchar_t; /* wchar_t (see above) */ typedef __wchar_t wchar_t;
質問者
お礼
ありがとうございます。ただのintだったとは。
お礼
ありがとうございます。signedかどうかは決められてないんですね。