C語言中int 型別的位元組長度

2021-06-01 12:38:14 字數 1279 閱讀 1243

int 這個資料型別比較特殊,具體分配的位元組數與機器字長和編譯器有關。如果要保證移植性,盡量用__int16 __int32 __int64 ,__int16、__int32,_int64 這些資料型別在所有平台下都分配相同的位元組。所以在移植上不存在問題。

所謂的不可移植是指:在乙個平台上編寫的**無法拿到另乙個平台上執行時,不能達到期望的執行結果

例如:在32為平台上(所謂32位平台是指通用暫存器的 資料寬度是32)編寫**,int 型別分配4個位元組,而在16位平台是則分配2個位元組,那麼在16位上編譯出來的exe,其中是為int分配2位元組,而在32位平台上執行時,會按照4個字 節來解析,顯然會出錯誤的!!

而對於非int型別,目前為止,所有的型別分配的位元組數都是相容的,即不同平台對於同乙個型別分配相同的位元組數!!

建議:在**中盡量避免使用int型別,根據不同的需要可以用short,long等代替。

下表是關於常見資料型別位元組長度的總結

資料型別名稱

位元組數別名

取值範圍

int*

signed,signed int

由作業系統

決定,即與作業系統的"字長"有關

unsigned int

*unsigned

由作業系統決定,即與作業系統的"字長"有關

__int8

1char,signed char

–128 ~ 127

__int16

2short,short int,signed short int

–32,768 ~ 32,767

__int32

4signed,signed int

–2,147,483,648 ~ 2,147,483,647

__int648無

–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

bool1無

false 或 true

char

1signed char

–128 到 127

unsigned char1無

0 到 255

short

2short int,signed short int

–32,768 到 32,767

unsigned short

2unsigned short int

0 到 65,535

c語言中char型別轉int型別

剛才做北郵2010年網研上機題的時候,遇到了char型和int型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文件上了,現在開始慢慢向csdn部落格轉移。1 char型數字轉換為int型,例如 char a 123 printf d n a...

c語言資料型別位元組長度

short與long兩個限定符的引入可以為我們提供滿足實際需要的不同長度的整形數。int通常代表特定機器中證書的自然長度。short型別通常為16位,long型別通常為32位,int型別可以為16位或32位。各編譯器可以根據硬體特性自主選擇合適的型別長度,但要遵循下列限制 short與int型別至少...

C語言中結構體資料位元組長度問題

在複習c語言中結構體時,遇到如下問題。定義結構體 typedef struct studentstudent int main 試著去計算結構所佔記憶體空間的大小 在32位作業系統中,int 所佔4個位元組,char佔乙個位元組,那麼結構體中所佔資料位元組不應該是6個位元組大小嗎。因為在計算機中是按...