Code Fix

中級 › 符号ありと符号なしの比較で -1 が巨大な数として扱われる › パターン5

符号ありと符号なしの比較で -1 が巨大な数として扱われる

int型とunsigned int型を比較すると、int型の値は自動的にunsigned intへ変換されます。

 1  #include <stdio.h>
 2  
 3  int main(void) {
 4      int delta = -2;
 5      unsigned int limit = 1;
 6      if (___________________________) {
                         ^
 7          printf("under\n");
 8      } else {
 9          printf("over\n");
10      }
11      return 0;
12  }
出力: over期待: under

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

符号ありと符号なしの比較で -1 が巨大な数として扱われる

負の数は非常に大きな正の数として扱われ、直感に反する比較結果になります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)