suchenxiang 发表于 2022-2-22 14:49:02

请问第十六行的循环条件要怎么理解呢?有点看不懂

#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; i < sizeof(days) / sizeof(days); i++)
      {
                printf("%2d月份:%d天\n", i+1, days);
      }


      return 0;
}

黄延涛 发表于 2022-2-22 14:59:34

感觉应该是i<12

isdkz 发表于 2022-2-22 16:04:49

sizeof(days) 是 数组 days 的总大小,
sizeof(days) 是数组其中一个元素 days 的大小,
sizeof(days) / sizeof(days) 数组的总大小除以数组其中一个元素的大小 也就是 数组的长度

suchenxiang 发表于 2022-2-22 16:46:19

isdkz 发表于 2022-2-22 16:04
sizeof(days) 是 数组 days 的总大小,
sizeof(days) 是数组其中一个元素 days 的大小,
sizeof(da ...

为什么要这么表达呢,每一步的解释能够看懂,但是不清楚原理是什么

suchenxiang 发表于 2022-2-22 16:46:50

suchenxiang 发表于 2022-2-22 16:46
为什么要这么表达呢,每一步的解释能够看懂,但是不清楚原理是什么

ok我解决了
页: [1]
查看完整版本: 请问第十六行的循环条件要怎么理解呢?有点看不懂