C テンプレートでは、char が signed char および unsigned char とは別の型とみなされているのはなぜですか?

DDD
リリース: 2024-10-29 06:04:31
オリジナル
909 人が閲覧しました

Why is char considered a distinct type from signed char and unsigned char in C   Templates?

char!=(signed char), char!=(unsigned char)

この質問では、char データ型の動作について調べます。 C を int などの他の整数型と比較した場合。具体的には、char が signed char と unsigned char の両方とは異なる型として扱われるという観察に対処します。

C 標準では、char、signed char、unsigned char を 3 つの別個の型として定義します。これらは同じ量のストレージとアライメント要件を共有しますが、値の表現とビット パターンは異なります。符号なし文字タイプの場合、すべてのビット パターンは数値を表します。ただし、これは char または signed char に必ずしも当てはまるわけではありません。

質問内のコード例は、この動作の違いを示しています。 int8 (signed char)、uint8 (unsigned char)、および char に対してテンプレートの特殊化が作成されると、3 つの個別のインスタンスが生成されます。これは、コンパイラが char を他の 2 つとは別の型として扱うためです。

対照的に、int、int32、および uint32 に対してテンプレートの特殊化が作成される場合、int と int32 のインスタンス化は 1 つだけ生成されます。同じタイプとみなされます。ただし、signed int は別の型として扱われ、独自のテンプレート特殊化が生成されます。

この動作は、char、signed char、unsigned char が 3 つの異なる型であると規定されている C 標準と一致しています。したがって、テンプレートの特殊化ではこれらを個別のタイプとして扱うのが正しいです。

以上がC テンプレートでは、char が signed char および unsigned char とは別の型とみなされているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート