符号タイプが混合された二項演算子の算術演算をプロモーション ルールがどのように管理するか
次のコードを考えてみましょう。
int max = std::numeric_limits<int>::max(); unsigned int one = 1; unsigned int result = max + one;
演算子は結果を 2147483648 として計算し、署名されていないことを示唆します戻り値の型として int を使用します。逆に、次のコードでは:
unsigned int us = 42; int neg = -43; int result = us + neg;
結果は -1 で、戻り値の型が int であることを示します。
プロモーション ルールの解決
The C標準では、算術二項演算子 (C §5/9):
の影響例
どちらの例でも、プロモーション ルールの結果は演算子の計算の unsigned 型。
例 1: max と one は両方とも unsigned int にプロモートされ、戻り値の型は unsigned int になります。
例 2: プロモーション ルールでは、int と unsigned int のどちらが明確に勝者であるかは決まりません。ただし、符号なしタイプが選択されているため、結果の符号なしオーバーフローが発生します。結果は最終的に int に割り当てられるため、結果の値は C §4.7/3 に従って未定義です。
以上がC のプロモーション ルールは、符号付き整数型と符号なし整数型が混在する二項算術演算子の戻り型をどのように決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。