簡體   English   中英

跨不同平台/系統的預選賽規模的變化

[英]Changes in the sizes of qualifiers across different platforms/systems

我已經在C和C ++中進行了很長時間的編程,並且在開始的時候,我開始了解跨平台和系統架構的不同基本數據類型的大小變化。 像在C ++中一樣,標准將int的大小聲明為最小2個字節(或等於或大於short ……我不完全記得)。 我知道,隨着我們的前進,它會有所變化,並且可能需要更大的尺寸。

我無法觀察到的一件事是預選賽的大小發生了變化,例如shortlong (甚至可能是long long )。 在不同的編譯器和操作系統中,它們是相同的,即使數據類型的大小有所增加,有時大小也與它們的長版本相同。

只是出於好奇,現在是否有任何示例表明這些預選賽的能力更大,或者只是大小固定?

當然有一些例子:我知道int是16、32、36和48位的系統(不是全部是現代的)。 我認為在某些情況下,它是24位或60位(但是那將是真正的舊機器),也許還有其他一些值。 我實際上是在int*是16位但char* 32的機器上工作的(但是那是相當長的時間了)。

當然,除非您在嵌入式系統或大型機上工作,否則您今天不會看到很多這類機器。 (我認為許多嵌入式處理器仍具有16位int 。)另一方面,即使在日常台式機或筆記本電腦上, long可能是32位(Windows和32位Mac和Linux)或64位(64位)。 Mac或Linux)。

實際上,它們不是“限定詞”。 他們一半描述了不同的類型。 short int是由不同類型的int long intint相同。 例如, 簡單類型說明符long ”以語法糖的形式解析為long int類型(C ++ 11表10),這一事實很容易引起誤解。 但是,在解決此問題后,將類型的大小規則應用於結果類型; 從來沒有根據關鍵字short / long來定義它。

而且,是的,就像更熟悉的類型一樣,這些類型的大小也可能發生變化。 例如, long int在當代的64位Visual C ++中為4字節,而在當代的64位GCC中為8字節。

暫無
暫無

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

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