|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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[1] = 29;
}
for (i = 0; i < sizeof(days) / sizeof(days[0]); i++)
{
printf("%2d月份:%d天\n", i+1, days[i]);
}
return 0;
} 这个for循环是什么意思呀?为什么用这个判断条件,这个判断条件是什么?求大神解答
本帖最后由 风车呼呼呼 于 2022-4-11 17:04 编辑
循环是什么意思看打印内容就知道了呀,就是循环打印每个月份有多少天呗
sizeof是用来计算尺寸(占内存多少空间)的,比如sizeof(int)是4字节(有的系统里是8字节)
sizeof(days)就是计算这个数组占多少字节,数组里有12个int型元素,那就是12*4=48字节
同理一个数组元素占4字节,这里的days[0]就只是代表其中一个元素而已,你换成days[2]、days[3],只要不越界都行。
然后再来看看结果,i要小于它俩的商,那就是i<12呗
所以这条判断条件完全等价于i<12
所以就是看起来有点唬人,至于为什么要写成那种形式,我也说不准
唯一能想到的可能性,大概是在预防哪天咱们一年不是12个月份了吧。
毕竟这种写法,只需要修改数组内容就可以了
要是写成i<12这种,还得跑来改一下判断条件
|
|