1-3 -1的unsigned类型(p23)
警惕 unsigned 类型,下面的代码不会运行至 printf 函数,因为 TOTAL_ELEMENT 是一个 unsigned 类型,而-1(在 unsigned 下)是一个很大的数。
int array[] = {23, 34, 12, 17};
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
int main() {
int d = -1, x;
if(d <= TOTAL_ELEMENTS - 2)
printf("%s\n", "running here!\n");
return 0;
}
注意这个宏使用的是 array[0] 这样无需修改宏就可以把它适配到其他类型了。
Last updated
Was this helpful?