31

C/C++ 標準では1 文字あたり最低8 ビットしか保証されておらず、理論的には 9/16/42/その他の可能性があり、したがって、移植可能なコードの記述に関するすべてのサイトは 8bpc を想定しないように警告していることを知っています。私の質問は、これが実際にどのように「非移植性」であるかということです。

説明させてください。私が見ているように、システムには 3 つのカテゴリがあります。

  1. コンピューター- Mac/Linux/Windows/Unix/*nix/posix/その他を実行しているデスクトップ、ラップトップ、サーバーなどを意味します (リストが厳密には正しくないことはわかっていますが、おわかりでしょう)。正確に8 ビットでcharはないようなシステムがあると聞いて、私は非常に驚かれることでしょう。(間違っていたら訂正してください)
  2. オペレーティング システムを搭載したデバイス- これには、スマートフォンやそのような組み込みシステムが含まれます。8 ビット以上のシステムを見つけてもあまり驚かないでしょうがchar、これまでに聞いたことがありません (知らない場合はお知らせください)。
  3. ベア メタル デバイス- VCR、電子レンジ、古い携帯電話など。この分野では私は少しも経験がないので、ここでは何でも起こり得ます。しかし、コードを Windows デスクトップと電子レンジの間でクロス プラットフォームにする必要があるのでしょうか。両方に共通のコードを持つ可能性はありますか?

結論: 8 ビット以外の一般的な (%0.001 以上の) プラットフォーム (上記のカテゴリ 1 および 2)charありますか? そして、私の上記の推測は本当ですか?

4

4 に答える 4

27

limit.h を使用する

CHAR_BIT

http://www.cplusplus.com/reference/clibrary/climits/

また、指定されたサイズを正確に使用したい場合は、stdint.h を使用します。

于 2012-07-22T12:53:21.813 に答える
6

たとえば、多くのDSPCHAR_BIT16 以上です。

于 2012-07-22T12:56:00.530 に答える
4

少なくとも、64ビットアーキテクチャの整数サイズと同様に、将来のプラットフォームでは、より多くのビットを含むより広い文字を使用する可能性があります。ASCII文字は廃止され、Unicodeに置き換えられる可能性があります。これが理由かもしれませんので注意してください。

于 2012-07-22T12:45:43.393 に答える