有人可以发现以下程序的问题是什么,它不打印数组的数字就像它应该
#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
答案 0 :(得分:9)
你需要施放条件:
d <= (int)(TOTAL_ELEMENTS-2)
sizeof
以无符号格式返回字节数。
Before Cast和After Cast。宏本身并不是类型安全的,没有强制转换,两个值都会转换为无符号值,结果为false。