鱼C论坛

 找回密码
 立即注册
查看: 1339|回复: 4

[已解决]求问 sizeof 的用法

[复制链接]
发表于 2022-4-11 16:40:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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 16:59:19
本帖最后由 风车呼呼呼 于 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这种,还得跑来改一下判断条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-11 16:51:30 From FishC Mobile | 显示全部楼层
sizeof(days) / sizeof(days[0]就是12的意思
至于为啥这样写?,不知道,炫酷??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-11 16:53:00 | 显示全部楼层
关于sizeof():http://www.cppblog.com/pwqonline/archive/2009/03/01/75269.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-11 16:59:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风车呼呼呼 于 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这种,还得跑来改一下判断条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-13 10:53:25 | 显示全部楼层
wp231957 发表于 2022-4-11 16:51
sizeof(days) / sizeof(days[0]就是12的意思
至于为啥这样写?,不知道,炫酷??

这样求得了数组的个数,下面遍历用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 22:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表