ホームページ >バックエンド開発 >C++ >C の通常の算術変換では、符号付き整数と符号なし整数が混在した演算をどのように処理するのでしょうか?

C の通常の算術変換では、符号付き整数と符号なし整数が混在した演算をどのように処理するのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 03:06:10569ブラウズ

How Do C  's Usual Arithmetic Conversions Handle Mixed Signed and Unsigned Integer Operations?

混合符号付き 2 項演算子のプロモーション ルール

算術型のオペランドを取る演算子は自動変換を実行し、事前定義されたルールに従って結果の型を決定します。オペランドの符号が異なる場合、C は C 標準の §5/9 に概説されている通常の算術変換プロセスに従います。

最初の例では:

int max = std::numeric_limits<int>::max();
unsigned int one = 1;
unsigned int result = max + one;

整数昇格が実行されます。 max と one の両方を int に変換すると、unsigned int の結果が得られます。 max の符号は無視され、結果は 2147483648 になります。

2 番目の例では:

unsigned int us = 42;
int neg = -43;
int result = us + neg;

変換は、符号なしオペランドが優先されるという規則に従い、neg が返されます。符号なし型に変換されます。 us neg の値は int として表現できないため、この変換の結果、int の結果は実装定義の値になります。

以上がC の通常の算術変換では、符号付き整数と符号なし整数が混在した演算をどのように処理するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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