【发布时间】:2018-01-21 06:55:45
【问题描述】:
这个程序应该打印出array的元素,但是运行时没有输出。
#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;
}
为什么这个程序不显示任何输出?
【问题讨论】:
-
带有硬编码变量名的宏自找麻烦。
-
更改
d=0确实会输出内容 -
@TonyTannous 但它没有解释 OP 中的问题是什么
-
@CIsForCookies 它是评论部分。我没有告诉他更改
d=0或提供解决方案。我只是想知道。 -
您应该询问您的编译器。它通常会告诉您问题所在。在这种情况下也是如此。对于 gcc 和 clang 使用
-Wall -Wextra,对于 Visual C(++) 至少使用/W3,最好至少在解决问题时使用/W4。
标签: c loops integer sizeof negative-number