符号が異なる場合の二項演算子の昇格
二項演算子が符号の異なるオペランドを演算する場合、C 標準は昇格を決定するための特定のガイドラインを提供します。ルールとその結果の型。
標準のセクション 5/9 では、「通常のこのような演算子に適用される「算術変換」。これらの変換は階層順序に従います。
これらのルールを提供されたコード例に適用します:
例 1:
unsigned int one = 1; int max = std::numeric_limits<int>::max(); unsigned int result = max + one;
unsigned int が優先されるためルールのステップ 5 で int を使用すると、すべてのオペランドが unsigned int に変換されます。したがって、結果は unsigned int 型になります。
例 2:
unsigned int us = 42; int neg = -43; int result = us + neg;
この場合、ルールにより、両方のオペランドを unsigned int に変換する必要があります。ただし、結果の値 (-1) は unsigned int で表現できません。したがって、式の結果の型は、§4.7/3 に従って実装定義されます。
以上がC は、符号の異なる二項演算子の昇格をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。