这个循环条件是什么意思啊 已经标红了
#include <stdio.h>int main()
{
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i, year;
printf("请输入一个年份:");
scanf("%d", &year);
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
days = 29;
}
for (i = 0; <font color="Red">i < sizeof(days) / sizeof(days)</font>; i++)
{
printf("%2d月份:%d天\n", i+1, days);
}
return 0;
}
sizeof()函数是获取变量所占的长度。sizeof(days)是数组days的空间大小,大小为int类型变量的空间大小×数组中变量个数,sizeof(days)是days的空间大小,即int类型变量的空间大小。
因此sizeof(days) / sizeof(days)就是获取days数组的变量个数。 sizeof返回的是传入数据的类型所占的字节数,如sizeof(1) 由于传入的是一个整型,所以返回数字是4 而如果传入的是数组,也会返回数组所占字节数,所以你这个条件的意思是,i<数组所占的字节数/单个元素所占的字节数,其含义为数组的长度,类似于js中的.length. days[] 是有 12 个元素的整型数组,占用了 4 × 12 = 48 个字节,days 是 days[] 中的一个元素,属于整型数,占用 4 个字节,所以:
for (i = 0 ; i < sizeof(days) / sizeof(days) ; i ++)
等效于:
for (i = 0 ; i < 12 ; i ++)
页:
[1]