gpt4 book ai didi

c - 为什么下面的代码不打印任何内容..?

转载 作者:行者123 更新时间:2023-11-30 20:05:44 24 4
gpt4 key购买 nike

为什么下面的代码没有输出任何内容?

#include<string.h>
#include<stdio.h>
int array[] = {1, 2, 3, 4, 5, 6, 7};
int main()
{
int i;
for(i = -1; i <= (sizeof(array)/sizeof(array[0])); i++)
printf("%d\n", array[i+1]);
return 0;
}

最佳答案

您没有正确使用数组索引。使用当前代码,您将超出数组范围,产生 undefined behavior 。请记住,c 中的数组索引是基于 0 的,这意味着定义为 arr[n] 的数组将具有来自 arr[ 的有效索引0]arr[n-1]

也就是说,请记住,sizeof 运算符返回一个 size_t,通常是 unsigned 类型。因此,signedunsigned 的比较会产生奇怪的行为。

将代码更改为

int size = sizeof(array) / sizeof(array[0]);
for(i = 0; i < size; i++)
printf("%d\n", array[i]);

关于c - 为什么下面的代码不打印任何内容..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29521648/

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