ホームページ  >  記事  >  バックエンド開発  >  C では、「char」、「signed char」、「unsigned char」が「int」、「signed int」、「unsigned int」とは異なる扱いを受けるのはなぜですか?

C では、「char」、「signed char」、「unsigned char」が「int」、「signed int」、「unsigned int」とは異なる扱いを受けるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 22:37:03275ブラウズ

Why are `char`, `signed char`, and `unsigned char` Treated Differently from `int`, `signed int`, and `unsigned int` in C  ?

Char!=(Signed Char), Char!=(Unsigned Char)

C プログラミングでは、char、signed char、unsigned char は別個のデータ型とみなされます。 。この動作は、int と signed int が同じ型であり、unsigned int が別の別の型である整数とは異なります。

質問:

なぜ以下のコードは、char 型と int 型ではコンパイル方法が異なりますか?

cout << getIsTrue< isX<int8>::ikIsX  >() << endl;
cout << getIsTrue< isX<uint8>::ikIsX  >() << endl;
cout << getIsTrue< isX<char>::ikIsX >() << endl;

答え:

C は、char、signed char、unsigned char を 3 つの異なる型として区別します。これが、char、int8、および uint8 のテンプレートのインスタンス化が異なる理由です。

ただし、整数の場合、int と signed int は同じ型ですが、unsigned int は異なる型です。これが、int、int32、および uint32 のテンプレートのインスタンス化で一意のテンプレートが 2 つだけになる理由です。

標準の [basic.fundamental](https://eel.is/cdraft/basic.fundamental) には次のように記載されています。 :

「Plain char、signed char、unsigned char は 3 つの異なる型です。」

これは、実装に応じて、異なるオブジェクト表現があり、異なる値の範囲を持つことができることを意味します。

以上がC では、「char」、「signed char」、「unsigned char」が「int」、「signed int」、「unsigned int」とは異なる扱いを受けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。