3

次のコード例は、shorttoの暗黙的なキャストcharがレベル3で発生するのに対し、inttoの暗黙的なキャストcharは警告レベル4でのみ発生することを示しています。

int main()
{
    short as = 1;
    int   ai = 1;
    char  b1 = as; // warning C4244 (Level 3)
    char  b2 = ai; // warning C4244 (Level 4)
    return 0;
}

これの理由は何ですか–ドキュメントは理由を省略していますか?

変数のタイプを変更し、この警告を使用して変換の問題の可能性を特定した後、この問題が発生しました。警告を見逃し、レベル4に切り替える必要があることを認識しました。

4

1 に答える 1

5

理由の1つは、小さい型を含む算術演算が実際にはintにプロモートされた値で実行されるため、intの結果を元のサイズに戻す方が少し合理的である可能性があります。

文字にshortを割り当てることは、ほとんどの場合間違いです。

于 2012-08-08T15:28:36.387 に答える