e82.c

unsigned は符号なしなので負値にはなりません


/* 修正前 */ #define OK 0 #define NG (-1) void func() { unsigned short val = NG ; /* 長い処理 */ if(val != NG) { printf("必ず来る¥n") ; } }
/* 修正例 */ void func() { int val = NG ; /* 長い処理 */ if(val != NG) { printf("条件により来る¥n") ; } }

解説 unsigned short は符号なしなので、-1と等しくなる事はありません