淺析C語言中的整形類型

在C語言中,能夠把 字符型、短整形、整形、長整形都看做是整形,同屬於整形家族這個大類型。
這些類型的大小,默認是否有符號等一些知識點較零散,較容易混淆,因此特意整理以下。
 
一 類型存儲字節長度說明
  字符型(char): C語言規定長度是8位,佔一個字節。
  短整、整形、長整型之間的關係則是:
   長整形至少和整形同樣長,整形至少和短整形同樣長。
  sizeof(long int) >= sizeof(int) >=sizeof(short int)
  短整形、整形、長整形的長度(佔幾個字節)C語言標準是未明確規定的,
由編譯器實現決定。
 
二 是否有符號說明
字符型(char),C語言標準未規定默認是signed仍是unsigned signed,由編譯器實現決定。
短整形、整形、長整形則C語言標準明確規定默認是signed的。C語言標準中明確規定除了char類型外,
若是不明確寫明signed或unsigned 關鍵字都表示是signed。
例如  int n1; //n1確定是有符號類型的整數。 確定是 signed int n1。
         char ch1; //根據編譯器的實現而定,ch1有多是signed char, 也有多是unsigne char 。
綜上所述,signed 通常用在char類型聲明上,其餘類型默認都是signed類型的。
 
三 整形聲明的省略寫法
short  long  signed  unsigned 這些是用於修改變量長度和符號的關鍵字。
在聲明整形變量時,若是聲明中已經有有了以上4個關鍵字聲明符,關鍵字int能夠省略。
例如 unsigned short int   a; 等同於  unsigned short a ;
short == signed short ==short int == signed short int 。
int == signed int == signed  
long == long int == signed long == signed long int
 
unsigned short == unsigned short int
unsigned int  == unsigned
unsigned long == unsigned long int
 
四 實際經常使用編譯器實現規範
雖然各編譯器對於整形的具體實現不相同,但一般實現都聽從ILP32或LP64規範。
ILP32的含義是 I(Integer),L(Long), P(Pointer)是32位,意思是整形、長整形、指針都是4字節、32位。32位計算機採用該規範。
LP64 的含義是 L(Long), P(Pointer)是64位,8字節。一般64位計算機採用該規範。
編譯器規範具體實現以下:
 
 
 
   類型
ILP32
LP32
char 
8位
8位
short
16位
16位
int 
32位
32位
long 
32位
64位
long long
64位
64位
指針
32位
64位
double
64位
64位
相關文章
相關標籤/搜索