C および C の算術演算で短い変数を Int に変換する必要がある理由
この要件を C から継承しているにもかかわらず、C では次の変換が必須です。歴史的な理由により、算術演算の前に変数を int に short にします。
この背後にある理論的根拠は、C 実装における 2 つの主な考え方、つまり符号なしの保存と値の保存に由来しています。 Unsigned preserving は short を unsigned int に昇格させますが、value preserving はすべての short 値を表現できる場合は signed int に昇格し、それ以外の場合は unsigned int に昇格します。
このアプローチは、実行環境全体での short のさまざまな表現に対応するために採用されました。常に int に変換することにより、計算はより幅広い型で実行され、多くの場合、より小さくて高速なコードが生成されるだけでなく、正しい結果がより頻繁に生成されます。
たとえば、次のことを考慮してください。
short s = 1, t = 2; auto x = s + t;
ここで、整数プロモーションでは加算を実行する前に s と t が int に変換されるため、x の型は int になります。狭い型 (short など) での計算を許可すると、予期しない結果や不正確な答えが生じる可能性があります。したがって、int への変換により、一貫した動作と最適なパフォーマンスが保証されます。
以上がC と C では、算術演算の前に short 変数を int に変換する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。