中級 › 符号ありと符号なしの比較で -1 が巨大な数として扱われる › パターン2
符号ありと符号なしの比較で -1 が巨大な数として扱われる
int型とunsigned int型を比較すると、int型の値は自動的にunsigned intへ変換されます。
1 #include <stdio.h> 2 3 int main(void) { 4 int score = -5; 5 unsigned int passLine = 3; 6 if (______________________________) { ^ 7 printf("fail\n"); 8 } else { 9 printf("pass\n"); 10 } 11 return 0; 12 }
出力: pass期待: fail
空欄を埋めてコンパイル・実行を通す
scoreが明らかにpassLineより低いにもかかわらず、符号なしへの暗黙変換によって「合格」と誤判定されてしまいます。
次の問題