亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從零開始的月份編號

從零開始的月份編號

慕森王 2019-12-03 10:56:17
某些流行的編程語言使用的月份編號相差1 – Java和Java一樣,如果要使用內存,C是另一個。我有一些問題:如果您要忽略外行使用的月份編號,那么為什么出于一致性考慮,也要忽略外行使用的日期編號,并從0開始對每個月中的天數進行編號?為什么這么常見?首先是誰的主意?
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

使用零開始計數實際上是Assembly程序員的一種優化技巧。他們沒有將1分配給計數寄存器,而是對其進行了異或運算,這在CPU周期中略快。這意味著計數將從0開始,并且始終取決于元素的長度(不包括最后一個元素)。

另外,在指針算術中也使用零,在這種情況下,您將使用一個基本指針指向某些已分配的內存,再加上第二個指針,該指針與該基本指針的偏移量。在這里,使用零值將偏移量指向存儲塊的基數很有意義。(一般的數組邏輯往往是基地址加上偏移量x記錄大小。)

從零開始的月份數字?通常,許多編程環境自某些默認數據起將數據計算為幾天。1899年12月31日是一個受歡迎的日期,盡管還有許多其他日期用作基準日期。所有其他日期都偏離此基準,并且將僅存儲為一個數字。分數將用于表示小時,分鐘和秒,其中0.25表示24/4 = 6小時。因此,要將日期轉換為真實日期,所有環境要做的就是將此數字轉換為真實日期。

但是,從零開始的數組和從1開始的月份值的組合確實帶來了問題。要獲取第9個月的月份名稱,您必須從month數組中獲取第8項。一些開發人員會很樂意在獲得名稱之前減少月份數。其他人則傾向于將月份更改為從零開始的格式,因為人們只想知道名稱,而不是數字。這是個人觀點。


查看完整回答
反對 回復 2019-12-03
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

就是這樣,基于此假設而構建的巨大軟件意味著這將持續一段時間。

我的看法是這是C的錯,所有其他后來才出現的語言也都遵循了C。

您會從不了解的人那里得到一些有趣的情況。我們的團隊發現的少數Y2K錯誤之一是一個網站,自豪地宣稱年份是19100,因為它們在struct tm年份之前加上了文字“ 19”。


查看完整回答
反對 回復 2019-12-03
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

是的,羅馬人也有零問題。


這只是數學(是程序設計的重要組成部分,尤其是早期程序設計)的[非直覺]結果,將零定義為第一個(有問題的術語是一個)實數,正 *自然數,并且由于數組使用實數進行了索引,自然數,“第一個”元素位于索引0。


月實際上是數組中的命名值,其中天和年是編號的值-將天/年看成看起來像{“ 1”,“ 2”,“ 3”,...的數組可能會更有用。 .. } 他們自己。


至于為什么這是如此普遍(除了在數學上是正確的),您列出的所有語言都是出于同一原因而起源的……


編輯:


進一步研究它,這個Wikipedia鏈接詳細說明了零索引的幾個好而有趣的原因(它并沒有直接說明為什么月被零索引了,但我認為已經涵蓋了),因此,該SO鏈接已經回答了之前的問題。


似乎普遍的觀點是“歷史事故”或“因為月份不是數字,所以不能與日/年存儲進行比較”,具體取決于您問的是誰。


*對不起,對不起,物理!=有事再來咬我。現在去熨燙我的手。


查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 856 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號