中級 › 符号ありと符号なしの比較で -1 が巨大な数として扱われる › パターン4
符号ありと符号なしの比較で -1 が巨大な数として扱われる
int型とunsigned int型を比較すると、int型の値は自動的にunsigned intへ変換されます。
1 #include <stdio.h> 2 3 int main(void) { 4 int diff = -3; 5 unsigned int threshold = 2; 6 if (______________________________) { ^ 7 printf("below\n"); 8 } else { 9 printf("above\n"); 10 } 11 return 0; 12 }
出力: above期待: below
空欄を埋めてコンパイル・実行を通す
diffは自動的にunsigned intへ変換され、非常に大きな正の数として比較されてしまいます。
次の問題