到c99目前為止,c語言為我們提供了12個相關的資料型別關鍵字來表達各種資料型別。
如表所示,k&rc提供了7個,c891,c90 新増了2個,c99新増了3個。
c的基本資料型別
整型是c語言最基本的資料型別,它以二進位制編碼的方式進行儲存,具體可以包括字元、短整型、整型和長整型等。例如,整數2的二進位制表示為10,它在8位與32位的作業系統中儲存方式如圖所示。
雖然在計算機中整數是以二進位制編碼方式進行儲存的,但為了便於表達,有時候又會用十六進製制編碼方式表示(例如,在32位作業系統下,整數2的十六進製制編碼方式為0x00000002),二進位制和十六進製制之間能夠很方便地進行轉換。
與此同時,整數型別又可分為有符號( signed)和無符號( unsigned)兩種型別,limits.**件定義了整型資料型別的表達值範圍。
ansi標準定義的整數型別
簡單地講,有符號和無符號整數間的區別在於怎樣解釋整數的最高位。如果定義乙個有符號整數,則c編譯程式生成的**認為該數最高位是符號標誌:符號標誌為0,則該數為正;符號標誌為1,則該數為負。
負數採用2的補碼的形式來表示,即對原碼各位求反(符號位除外),再將求反的結果加1,最後將符號位設定為1。例如,在32位作業系統中,有符號整數-2的儲存方法如下。
第一步:取絕對值2的二進位制編碼。
00000000 00000000 00000000 00000010
第二步:求反(符號位除外)。,
0111111111111111 11111111 11111101
第三步:將求反的結果加1。
01111111 11111111 11111111 11111110
第四步:將符號位設定為1。
11111111 11111111 11111111 11111110 ,
因此,有符號整數-2的二進位制編碼為1111111 1111111 1111111 1111110,十六進製制編碼為0xfffffffe。
最後還需要說明的是,當型別修飾符被自身使用時(即它不在基本型別之前時),假定其為int型。也就是說,表的兩種型別是等效的。
**********=我是華麗的分割線**********=
嵌入式linux&arm
或瀏覽器開啟:
基礎C語言知識串串香6 記憶體大話題
1.0 記憶體就是程式的立足之地,體現記憶體重要性。1.1 記憶體理解 記憶體物理看是有很多個bank 就是行列陣式的儲存晶元 每乙個bank的列就是位寬,每一行就是words,則儲存單元數量 行數 words 列數 位寬 bank的數量 通常也用m w的方式來表示晶元的容量 或者說是晶元的規格 組...
基礎C語言知識串串香3 size t型別
c語言標準規定size t是一種無符號整數型別,編譯器可以根據作業系統的不同而用typedef來定義不同的size t型別,即在不同的作業系統上所定義的size t 可能不一樣。例如在32位作業系統上可以將size t定義為unsigned int型別,而在64位作業系統上則可以定義為unsigne...
基礎C語言知識串串香8 指標精髓
其中 p表示輸出乙個指標,就是指標變數 其存放的那個位址 可以理解為輸出乙個位址。3.2 int p1,p2 等同於int p1 int p2 int 其不能改變 因為 是乙個常數。3.3 規範性 在定義指標時,同時賦值為null,在用指標時,先判斷它是不是null。尤其是在malloc申請記憶體使...