C語言各型別所佔位元組數

2021-10-04 08:13:21 字數 1133 閱讀 2602

(1)struct結構體變數大小等於結構體中的各個成員變數所佔記憶體大小總和,union共用體變數大小等於共用體結構中占用記憶體最大的成員的記憶體大小; 聯合體中占用記憶體空間最大的字段加上填充位元組(對齊位元組後所需位元組數)。

(2)列舉型別,指乙個被命名的整型常數的集合。即列舉型別,本質上是一組常數的集合體,只是這些常數有各自的命名。列舉型別,是一種使用者自定義資料型別。

列舉變數,由列舉型別定義的變數。列舉變數的大小,即列舉型別所佔記憶體的大小。由於列舉變數的賦值,一次只能存放列舉結構中的某個常數。所以列舉變數的大小,實質是常數所佔記憶體空間的大小(常數為int型別,當前主流的編譯器中一般是32位機器和64位機器中int型都是4個位元組),列舉型別所佔記憶體大小也是這樣。

(3)指標其實就是位址, 與它所指的基型別無關, 更與c語言無關, 只與機器有關. 如果你的機器是16位定址的, 那指標就是16位的,2個位元組, 如果是32位定址的, 指標也是32位的,4個位元組.如果定址是64位的,指標也是64位,8個位元組。

(4)型別

16位32 位

64位char11

1short int22

2int24

4unsigned int24

4float44

4double88

8long44

8long long88

8unsigned long44

8首先來看字元型別,這裡單指char , char變數在記憶體中儲存的是字元對應的ascii碼值。所以長度也是固定的,不管在哪種編譯器下,均為1個位元組。

再來看浮點型別,c中的浮點型別有倆種,float和double,與整數不同的是,浮點數的長度適中的固定的,float占用4個位元組,double占用8個位元組。

最後來看整型型別,查閱資料後發現雖然16位、32位或者64位的機子各種型別並不一樣,但有幾條規則(ansi/ iso制定):

(1)struct結構體變數大小等於結構體中的各個成員變數所佔記憶體大小總和,union共用體變數大小等於共用體結構中占用記憶體最大的成員的記憶體大小; 聯合體中占用記憶體空間最大的字段加上填充位元組(對齊位元組後所需位元組數)。

C C 中各型別資料所佔位元組數

ref 和機器字長及編譯器有關係 所以,int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則 ansi iso制訂的 1.sizeof short int sizeof int 2.sizeof int sizeof long int 3.short int至少應...

C語言中各種整型型別所佔位元組數

平台 64位編譯器 linux gcc includemain 結果 char a 1 char b 8 short int c 2 int d 4 unsigned int e 4 float f 4 double g 8 long h 8 long long i 8 unsiged long j...

C語言中幾種型別所佔位元組數

最近經常會遇到c語言中各型別變數所佔位元組數的問題,索性在這裡做乙個整理總結。其實c標準並沒有具體給出規定哪個基本型別應該是多少個位元組數,而且這個也與os 編譯器有關,比如同樣是在32位作業系統,vc 的編譯器下int型別為4個位元組,而在tuborc下則是2個位元組。下面給出乙個 方便檢視個型別...