雨如洁 发表于 2020-3-15 20:46:52

这个循环条件是什么意思啊 已经标红了

#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;
}


sunrise085 发表于 2020-3-15 20:46:53

sizeof()函数是获取变量所占的长度。sizeof(days)是数组days的空间大小,大小为int类型变量的空间大小×数组中变量个数,sizeof(days)是days的空间大小,即int类型变量的空间大小。
因此sizeof(days) / sizeof(days)就是获取days数组的变量个数。

542624047 发表于 2020-3-15 21:09:40

sizeof返回的是传入数据的类型所占的字节数,如sizeof(1) 由于传入的是一个整型,所以返回数字是4 而如果传入的是数组,也会返回数组所占字节数,所以你这个条件的意思是,i<数组所占的字节数/单个元素所占的字节数,其含义为数组的长度,类似于js中的.length.

jackz007 发表于 2020-3-17 00:47:31

      days[] 是有 12 个元素的整型数组,占用了 4 × 12 = 48 个字节,days 是 days[] 中的一个元素,属于整型数,占用 4 个字节,所以:
      for (i = 0 ; i < sizeof(days) / sizeof(days) ; i ++)
      等效于:
      for (i = 0 ; i < 12 ; i ++)
页: [1]
查看完整版本: 这个循环条件是什么意思啊 已经标红了