一个谜语(在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]); getchar(); return 0; }
上面的代码应该打印所有的数组元素,代码中的问题是什么(输出什么都没有)?我认为循环不会迭代一次?
我发现以下代码确实有效:
#include<stdio.h>#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0]))) int array[] = {23,34,12,17,204,99,16}; int main() { int d; int x = (TOTAL_ELEMENTS-2); for(d=-1;d <= x;d++) printf("%d\n",array[d+1]); getchar(); return 0; }
我有一个理论认为它与宏有关,但我不能指责问题。
喵喵时光机
白板的微信
慕容3067478
相关分类