e4068.c

unsignedで負値を扱おうとしては駄目

/* B:e4068: 整数変換により符号の変換が起こります */

int f(void) { int i = -12; unsigned int ui = -15; /* ←??? */ if (i > -10) {puts("A");} if (ui > -10) {puts("B");} /* NG 変換が起きます*/ if (i >= -10) {puts("C");} if (ui >= -10) {puts("D");} /* NG 変換が起きます*/ if (i <= -10) {puts("E");} if (ui <= -10) {puts("F");} /* NG 変換が起きます*/ return i + ui; } 出力 E F
解説 unsignedの変数と負の値を比較しているため、符号変換が起こります。 unsignedの変数と負値を比較する事自体がおかしいので、 変数の型を見直してください。