關於位元組的長度與編譯器的關係

2021-09-13 23:26:17 字數 898 閱讀 9435

位元組的長度和編譯器有關係:

所以,int,long int,short int的寬度都可能隨編譯器而異。

但是,short int的長度最大為int,而int的長度最大為long int

short int最短為2個位元組,long int 最短為4個位元組

例如:16位編譯器

char :1個位元組

char*(即指標變數): 2個位元組

short int : 2個位元組

int: 2個位元組

unsigned int : 2個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

32位編譯器

char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

64位編譯器

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 8個位元組

long long: 8個位元組

unsigned long: 8個位元組

編譯器與位元組對齊

編譯器版本 gcc 4.1.2 vc 6.0 上次研究了結構體和位元組對齊的問題,不過有個復合結構體有點奇怪。pragma pack 8 struct s1 struct s2 pragma pack 在gcc下,sizeof struct s2 20,但在vc 6.0下卻是24 其實,這個牽扯到了...

GCC編譯器的位元組對齊

include 由於在x86 32位機器 平台下,gcc編譯器預設按4位元組對齊,如 結構體4位元組對齊,即結構體成員變數所在的記憶體位址是4的整數倍 可以通過使用gcc中的 attribute 選項來設定指定的對齊大小。1 attribute packed 讓所作用的結構體取消在編譯過程中的優化對...

關於C編譯器裡位元組對齊的問題

宣告 只是為了方便個人學習用 首先是來自http blog.csdn.wenddy112 articles 300583.aspx 通過 pragma pack n 改變c編譯器的位元組對齊方式 上的乙個問題 對於下面的結構體 struct test 結構各成員空間分配情況是怎樣的?文章中解釋 結構...