1、整型數據的分類
(1)基本整型(int型)
編譯系統分配給int型數據2個字節或4個字節(由具體的C編譯系統自行決定)。如Turbo C 2.0為每一個整型數據分配2個字節(16個二進制位),而Visual C 為每一個整型數據分配4個字節(32位)。在存儲單元中的存儲方式是:用整數的補碼形式存放。一個正數的補碼是此書的二進制形式,如5的二進制形式是101,如果用兩個字節存放一個整數,則在存儲單元中數據形式如圖1所示。如果是一個負數,則應先求出負數的補碼。求負數的補碼的方法是:先将此數的絕對值寫成二進制形式,然後對其後面所有各二進位按位取反,再加1.如-5的補碼見圖2.
圖1 正整數的補碼存儲形式
圖2 負整數的補碼存儲形式
在存放整數的存儲單元中,最左面一位是用來表示符号的,如果該位為0,表示數值為正;如果該位為1,表示數值為負。
(2)短整型(short int)
類型名為short int或short。如用Visual C 6.0,編譯系統分配給int數據4個字節,短整型2個字節。存儲方式與int型相同。一個短整型變量的值的範圍是-32768~32767.
(3)長整型(long int)
類型名為long int或long。一個long int型變量的值的範圍是2e31~(2e31-1),即-2147483648~2147483647(Visual C 6.0),編譯系統分配給long數據4個字節。
(4)雙長整型(long long int)
類型名為long long int或long long,一般分配8個字節。這是C99新增的類型,但許多C編譯系統尚未實現。
2、整型變量的符号屬性
以上介紹的幾種類型,變量值在存儲單元中都是以補碼形式存儲的,存儲單元中的第1個二進制代表符号。整型變量的值的範圍包括負數到正數。
整型數據常見的存儲空間和值的範圍
在實際應用中,有的數據的範圍常常隻有正值,為了充分利用變量的值的範圍,可以将變量定義為“無符号”類型。可以在類型符号前面加上修飾符unsigned,表示指定該變量是“無符号整數”類型。如果加上修飾符signed,則是“有符号類型”。因此在以上4種整型數據的基礎上可以擴展為以下8種整型數據。即:
以上有“*”的是C99增加的,方括号表示其中的内容是可選的,既可以有,也可以沒有。如果既未指定為signed也未指定為unsigned的,默認為“有符号類型”。如signed int a和int a等價。
有符号整型數據存儲單元中最高代表符号(0為正,1為負)。如果指定unsigned(為無符号)型,存儲單元中全部二進位(b)都用作存放數值本身,而沒有符号。無符号型變量隻能存放不帶符号的整數,如123,4687等,而不能存放負數,如-123,-3.由于左面最高位不再用來表示符号,而用來表示數值,因此無符号整型變量中可以存放的正數的範圍比一般整型變量中正數的範圍擴大一倍。如果在程序中定義a和b兩個短整型變量(占2個字節),其中b為無符号短整型:
short a; //a為有符号短整型變量
unsigned short b; //b為無符号短整型變量
則變量a的數值範圍為-32768~32767,而變量b的數值範圍為0~65535,。圖3表示有符号整型變量a的最大值(32767)和無符号整型變量b的最大值(65535).
圖3 符号整型/無符号整型變量最大值
說明:
(1)隻有整型(包括字符型)數據可以加signed或unsigned修飾符,實型數據不能加。
(2)對無符号整型數據用“%u”格式輸出。%u表示用無符号十進制數的格式輸出。
搜索微信公衆号【balayihuier】或掃描下方二維碼關注微信公衆号,資深軟件工程師帶你手把手撸代碼,從此走上人生巅峰,迎娶白富美!
公衆号《吧啦一會兒》,手把手帶你撸代碼
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!