簡體   English   中英

long long是8個字節,什么意思?

[英]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)不可能是8long long的大小是16

在大多數系統上,最長的標准數據類型是8字節(64位),這是long long


另外,您可以包括limits.h ,該庫包含每種數據類型的定義值以及它在系統上占用的空間。


long遇到了一定程度的興趣期間略有更新。 保證至少32位(或4字節)長。 因此, long int (盡管在這種情況下, long就是一個長度修飾符)。

問題是您的系統的一部分已切換到 64 位,而您的系統的一部分仍在以 32 位運行。

某處存在混淆,我不確定它在哪里,因為你沒有說你從哪里得到你的數字,所以我會盡量澄清基礎知識。

sizeof根據定義返回類型占用的字節數。 在所有現代系統上,一個字節由 8 位組成,但在一些深奧或舊的體系結構中,一個字節具有其他數量的位。 CHAR_BITlimits.h告訴你有多少位有一個字節。 但同樣,在所有現代架構上,都是 8。

sizeof(long long) 返回 8,但 long long 實際上是 16。

那不是真的。 如果sizoef(long long)為 8,則long long為 8 個字節長。

后續問題將是為什么 sizeof(long) 返回 8,但只包含 4 個字節。

再次,不是真的。 如果sizeof (long)8long包含 8 個字節。

問題是我們是否應該預期消除 4 字節長。

做夢都別想。 C 和 C++ 的支柱之一是向后兼容性。 刪除基本類型幾乎會破壞地球上的所有程序。

如果您問當intlong long似乎涵蓋所有內容時是否使用long類型,那么答案又是intlong long並沒有涵蓋所有內容。 有像 arduino 這樣的系統,其中sizeof int == 2sizeof long == 4sizeof long long == 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM