[英]Why is the 64bit integer extension of C++ called “long long”?
與其他類型不同:“ int”,“ boolean”,“ double”等。甚至是自定義類,也只有一個單詞。 它們的類型只有一個單詞,但是,只有那個整數使用兩個單詞。 怎么以及為什么會那么特別?
摘自: “ 通往64位的漫長道路 ” -John R. Mashey | 2006年10月1日-主題:系統演進
“ Algol 68 早在1968年就受到啟發,並且在某些時候也被添加到GNU C中。”
摘錄: 年表:多個互鎖螺紋
結束提取。
注:標准Algol68↗ 沒有對Unicode / UTF-16,也不是很長很長 很長 炭 炭 ,但(方便)的燒焦的大小不被大小作為一個字節的相同要求。 有時-“傳統上”- 字符少於8位,例如6位 ( ASCII或GOST )或7位(例如ASCII ,現在是GSM_03.38 )
C類型的命名方案最終似乎是從舊的Algol繼承而來的,Algol允許在int
或real
(它是浮點數的名稱)等類型之前添加任意數量的“ short”或“ long”前綴。 當然,它們的解釋取決於實現,並且不能保證long long long int
實際上大於long int
。
C繼承了前綴(至少對於整數而言,奇怪的是,他們為浮點數選擇了更多的即席設置),但當時並沒有看到允許對其進行迭代的必要。 而且由於C在許多方面都比較松懈,因此在long int
的情況下,它也允許刪除int
本身。
隨着64位計算機的出現,打破了只需要很少的大小(因此只需要該方案中的單個前綴)的假設,並且編譯器開始long long
支持long long
。 重新發現此方案的部分原因可能是它不需要破壞新的名稱或關鍵字。 然后C99將此類型作為標准的正式組成部分,C ++后來繼承了它。
實際上,正如我在“通往64位的漫長道路”中所寫的
“大約在1984年左右,Amdahl UTS和Convex為64位整數增加了很長的時間,前者在32位體系結構上,后者在64位二進制數據上。UTS尤其是將它用於長文件指針,這是出於相同動機。在PDP-11 Unix(1977年)中出現了很長的篇幅。Algol68在1968年出現了很長一段時間,並在某種程度上被添加到GNU C中。許多人討厭這種語法,但至少它不再使用任何保留的關鍵字。”
我不知道GCC何時添加很長時間,但是自從GCC 1.0於1987年發布以來,其他版本就更早了。
實際上,實際上,這實際上是由“漫長的道路”中所述的1992年工作組決定的。
之所以long long
采用C ++和C標准,是因為GCC已經使用了很多年,盡管其固有的丑陋性,但現有的做法還是勝出了。 至於為什么海灣合作委員會選擇了這個名字,你必須要問他們。 <g>
。
long long
區別於long
,后者通常只有4個字節(32位)。
long
是修飾符,可用於許多原始類型來對其進行修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.