以下是C程序的输出,目的是打印数组中的元素。但实际运行时并未这样做。此问题可能与C宏展开和整数算术有关。请参考以下链接:Confused about C macro expansion and integer arithmetic,A riddle (in C)。
为什么呢?
#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;
}
为什么呢?