淺析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位
 
 
 
 
 
 
  
 
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM