为什么下面的代码没有输出任何内容?
#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
类型。因此,signed
和 unsigned
的比较会产生奇怪的行为。
将代码更改为
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/