这家伙又emo了 2022-04-18 20:26 采纳率: 84.6%
浏览 8
已结题

关于day_of_year的一个细节性问题

这个函数输入某年的某月某日,就知道是该年的第几天

问题相关代码
static char daytab[2][13] = {
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int day_of_year(int year, int month, int day)
{
    int leap;

    leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
    for (int i = 1; i < month; i++)
        day += daytab[leap][i];
    return day;
}

这里之所以将daytab的元素声明为char类型,是为了说明在char类型的变量中存放较小的非字符整数也是合法的。我对这句话理解得不是很清楚。int数据类型的范围不是远大于char吗?将该数组的元素设置成int也没问题吧?

  • 写回答

1条回答 默认 最新

  • GEEK.攻城狮 2022-04-18 20:44
    关注

    修改成int也是没有问题的,但是C语言经常应用于一些嵌入式系统中,存储空间不像计算机那么大,特别是对于较大的数组,char和int型占用的空间还是差别很明显的。举个简单的例子,基础51单片机,内部仅仅有128字节的RAM,属于稀缺资源,在定义变量的时候,能用char的就不会用int。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日