[英]Long long is 8 bytes, meaning?
我已經閱讀了為什么sizeof(long long)
在大多數系統上為 8 的問題的答案,但我仍然不確定如何解釋它們的含義。
給出的原因之一是“那里”有很多代碼假設sizeof(long long) <= sizeof(size_t)
。 這就說得通了。 然后還有關於建築公約和品牌等各種觀點,我什至不想參與那些關於公約歷史的爭論。 根據標准, long long
可以是任意大小也是有原因的,但我認為這並不是我真正關心的問題。
我想知道的是,現在如何解釋sizeof(long long)
返回 8 而long long
實際上是 16 這一事實之間的差異。是否應該將其解釋為僅適用於sizeof
運算符的歷史殘余,或者是是否有一個與該事實相關的底層地址指針,以便對long long
操作以 8 字節增量執行?
Sizeof (signed) long v4: 8 (x at 2147483647)v4 的值:7fffffff
sizeof long long v5:8 (x at 9223372036854775807)v5 的值:7ffffffffffffffff
根據標准, long long
至少為64位,即8個字節。
在當今的大多數計算機上,它的長度為8個字節。 sizeof
(順便說一句,運算符,不是函數)返回其大小,您可以依靠它。 sizeof(long long)
不可能是8
而long long
的大小是16
。
在大多數系統上,最長的標准數據類型是8字節(64位),這是long long
。
另外,您可以包括limits.h
,該庫包含每種數據類型的定義值以及它在系統上占用的空間。
我long
遇到了一定程度的興趣期間略有更新。 保證至少32位(或4字節)長。 因此, long int
(盡管在這種情況下, long
就是一個長度修飾符)。
問題是您的系統的一部分已切換到 64 位,而您的系統的一部分仍在以 32 位運行。
某處存在混淆,我不確定它在哪里,因為你沒有說你從哪里得到你的數字,所以我會盡量澄清基礎知識。
sizeof
根據定義返回類型占用的字節數。 在所有現代系統上,一個字節由 8 位組成,但在一些深奧或舊的體系結構中,一個字節具有其他數量的位。 CHAR_BIT
從limits.h
告訴你有多少位有一個字節。 但同樣,在所有現代架構上,都是 8。
sizeof(long long) 返回 8,但 long long 實際上是 16。
那不是真的。 如果sizoef(long long)
為 8,則long long
為 8 個字節長。
后續問題將是為什么 sizeof(long) 返回 8,但只包含 4 個字節。
再次,不是真的。 如果sizeof (long)
為8
則long
包含 8 個字節。
問題是我們是否應該預期消除 4 字節長。
做夢都別想。 C 和 C++ 的支柱之一是向后兼容性。 刪除基本類型幾乎會破壞地球上的所有程序。
如果您問當int
和long long
似乎涵蓋所有內容時是否使用long
類型,那么答案又是int
和long long
並沒有涵蓋所有內容。 有像 arduino 這樣的系統,其中sizeof int == 2
, sizeof long == 4
和sizeof long long == 8
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.