なぜCは、「文字種」を使用してオブジェクトへのアクセスを可能にするんC/C++が署名済みのcharをあまりにも嫌うのはなぜですか?
6.5式オブジェクトは、その格納された値は、次のタイプoftheつを有する左辺式によってのみアクセスしなければならない
(C) :
- 文字の種類。
が、C++のみ文字とunsigned char型ことができますか?
3.10左辺値と右辺値(C++)
プログラムは、以下のタイプのいずれかの動作は未定義である以外のglvalueを通じてオブジェクトの格納された値にアクセスしようとする場合:
- charまたはunsigned char型です。
signed char型憎悪(C++標準からの引用)の別の部分:
3.9タイプ(C++)
(基底クラスのサブオブジェクト以外の)任意のオブジェクトについてオブジェクトがT型の有効な値を保持しているかどうかにかかわらず、オブジェクトを構成する基礎をなすバイトは、の文字列またはの符号なしchaの配列にコピーできます。 r。 の文字列またはの符号なしの文字列の配列の内容がオブジェクトにコピーバックされた場合、オブジェクトは元の値を保持します。
およびC標準から:
6.2.6タイプ(C)他のオブジェクトタイプのオブジェクトは、から成る非ビットフィールドに格納されている
値の表現N× CHAR_BITビット.nはそのタイプのオブジェクトのサイズ(バイト単位)です。値は、タイプの符号なし文字 [n]のオブジェクトにコピーすることができます(たとえば、memcpyによって)。結果のバイトセットは値のオブジェクト表現と呼ばれます。
私はunsigned char型は、パディングビットを持っていないことが保証のみ文字タイプですが、C99セクション6.2.6 ので、それがあると言ってstackoverflowの上で多くの人々を見ることができます。
signed char型は、任意のパディングビット
を持っていないもの
だから何がこの背後にある本当の理由とは?と言う 2つの整数型
引用符が付いている場所を指定できますか? –
"憎しみ"はどこから来たのですか?私はここに質問が表示されません。 –
* signed charにはパディングビットはありません。* - C++の動作をカバーするためにC標準を引用することはできません。 – chris