求问 sizeof 的用法
#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;
} 这个for循环是什么意思呀?为什么用这个判断条件,这个判断条件是什么?求大神解答 sizeof(days) / sizeof(days就是12的意思
至于为啥这样写?,不知道,炫酷?? 关于sizeof():http://www.cppblog.com/pwqonline/archive/2009/03/01/75269.html 本帖最后由 风车呼呼呼 于 2022-4-11 17:04 编辑
循环是什么意思看打印内容就知道了呀,就是循环打印每个月份有多少天呗
sizeof是用来计算尺寸(占内存多少空间)的,比如sizeof(int)是4字节(有的系统里是8字节)
sizeof(days)就是计算这个数组占多少字节,数组里有12个int型元素,那就是12*4=48字节
同理一个数组元素占4字节,这里的days就只是代表其中一个元素而已,你换成days、days,只要不越界都行。
然后再来看看结果,i要小于它俩的商,那就是i<12呗
所以这条判断条件完全等价于i<12
所以就是看起来有点唬人,至于为什么要写成那种形式,我也说不准
唯一能想到的可能性,大概是在预防哪天咱们一年不是12个月份了吧。
毕竟这种写法,只需要修改数组内容就可以了
要是写成i<12这种,还得跑来改一下判断条件 wp231957 发表于 2022-4-11 16:51
sizeof(days) / sizeof(days就是12的意思
至于为啥这样写?,不知道,炫酷??
这样求得了数组的个数,下面遍历用
页:
[1]