【发布时间】:2011-03-23 22:11:45
【问题描述】:
以下 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;
}
是什么原因?
【问题讨论】:
-
为什么不简单地
for (d = 0; d < TOTAL_ELEMENTS; ++d)? -
也许这是一个有启发性的例子,说明用 C 正确编程是多么困难。鉴于此,它确实是一个很好的例子。
-
这个问题是Gowri Korumar's C puzzles 的一部分,它是 50 个非常有教育意义的 C 问题的汇编。我从过去的知识和研究中回答了前 25 个问题,以防万一:C puzzles answered。