gpt4 book ai didi

c - 我在以下程序中缺少什么?

转载 作者:行者123 更新时间:2023-12-02 05:23:42 24 4
gpt4 key购买 nike

#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 循环一次都没有运行?

最佳答案

问题是 sizeof() 返回未签名的 size_t-1TOTAL_ELEMENTS - 2 的比较应该会产生一条警告,指示您比较了无符号和有符号。进行此比较时,-1 将转换为无符号值,即 MAX_UINT。在 32 位平台上,-1MAX_UINT 都是 0xFFFFFFFF

您的 TOTAL_ELEMENTS() 宏可以包含对 (int) 的转换,但这在技术上是不正确的,因为 size_t 具有更大的值范围大于 int。最好更改循环变量,使其声明为 size_t 并且永远不会变为负数。

关于c - 我在以下程序中缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683432/

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