gpt4 book ai didi

c - 使用循环打印全局数组的内容不会产生任何输出

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:21 24 4
gpt4 key购买 nike

我正在尝试以下应该打印全局数组内容的代码片段。但是为什么永远不会进入 for 循环?

#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 被提升为 unsigned int 因为 TOTAL_ELEMENTS#defineunsigned。因此,-1 成为 unsigned int 的最大值。

如下更改代码

#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 <= (int)(TOTAL_ELEMENTS - 2); d++)
printf("%d\n", array[d + 1]);

return 0;
}

关于c - 使用循环打印全局数组的内容不会产生任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32457717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com