c语言陷阱(1)
int array[] = {1,2,3,4};
#define SIZE (sizeof(array)/sizeof(array[0]))
int i=-1;
if(i<SIZE)
{
......................
}
该条件的语句永远都不会执行。
因为sizeof 返回的是unsigned int ; -1 与SIZE 比较时,i 会转变成为unsigned int ,成为一个巨大的数。11111111111111111111111111111111. 远远比SIZE 大。
解决方案: if (i<(int )SIZE)
尽量少的在程序中使用unsigned 类型