首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从零开始的月份编号

问从零开始的月份编号
EN

Stack Overflow用户
提问于 2009-09-21 05:55:38
回答 2查看 24.7K关注 0票数 100

一些流行的编程语言使用的月份编号与1相差1 -- JavaScript出现在我的脑海中,Java也是如此,如果内存有效的话,C是另一种。我有几个问题:

  • 如果你打算忽略外行使用的月份编号,那么为了保持一致性,为什么不忽略外行使用的日期编号,并从0开始对每个月中的日期进行编号?
  • 为什么这如此普遍?
  • 这是谁最初的想法?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-21 06:31:00

使用零开始计数实际上是汇编程序员的一个优化技巧。它们不是将1赋给计数寄存器,而是将寄存器与自身进行XOR运算,这在CPU周期中稍微快一些。这意味着计数将从0开始,并且将始终达到元素的长度,不包括最后一个元素。

此外,零的使用在指针算术中也很流行,在指针算术中,您将使用一个指向某个已分配内存的基指针,外加一个位于该基指针的偏移量的指针。在这里,使用值0将偏移量指向内存块的基址非常有意义。(一般的数组逻辑往往是基址加上偏移量x记录大小。)

和从零开始的月份数字?通常,许多编程环境将数据计算为自某些默认数据以来的天数。1899年12月31日是一个很受欢迎的日期,尽管还有很多其他日期被用作基准日期。所有其他日期都从这个基数偏移,并将仅存储为一个单独的数字。分数将用于表示小时、分钟和秒,其中0.25将是24/4 =6小时。因此,要将日期转换为实际日期,环境所需做的就是将此数字转换为实际日期。

但是,从零开始的数组和从1开始的月份值的组合确实会带来问题。要获取月份9的月份名称,必须从month数组中获取项目8。一些开发人员会很高兴在得到它的名字之前减少月份数字。其他人更喜欢把月份改成从零开始的,因为人们只想知道名字,而不是数字。这是我个人的观点。

票数 56
EN

Stack Overflow用户

发布于 2009-09-21 06:04:57

它就是这样,基于这一假设而构建的软件的巨大重量意味着它将存在一段时间。

我的观点是,这是C语言的错误,所有其他Johnie新出现的语言都符合这一点。

你会从不了解情况的人那里得到一些有趣的情况。我们的团队发现的为数不多的Y2K错误之一是一个网站自豪地宣布年是19100,因为他们在struct tm年前面加上了字面上的"19“。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1453043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档