其實數據類型可以講很多內容,這里看情況需要講多久吧。
本篇基本都是理論。
目錄
數據類型的分類
基本數據類型
構造數據類型
指針類型
空類型
計算數據類型或變量所占用的內存字節數
基本語法
進制轉換
二進制
二進制的概念
二進制與十進制的轉換
十六進制
十六進制的概念
二進制與十六進制的轉換
小結
數據類型的分類
在靈氣運轉的變量詳解(下)和scanf法術中我們第一次提到了數據類型這個概念,數據類型是定義變量或函數的存儲類型和操作方式。
數據類型可以簡單的分為以下四類。
基本數據類型
整數類型
在計算機中最小的存儲單位是位(bit),而一個字節(byte)通常由8個二進制位組成。每個二進制位可以表示0或1。
前文中我們常常提到的int就是整型,如果按從小到大來的話:
- char : 通常占用 1 個字節(8bit)內存空間。它既能存儲字符,也能存儲小整數。字符在計算機中以 ASCII 碼形式存儲,如
#include <stdio.h>
int main() {char a = 'A';printf("ASCII碼值: %d\n", a);return 0;
}
?這里輸出的結果是65,因為A的ASCII碼值就是65。
ASCII是一種基于7位二進制編碼的字符編碼系統,主要用于表示英文字母、數字、標點符號和控制字符等,總共可以表示128個不同的字符?。
圖源網絡,侵權刪?
- short :?短整型,一般占 2 個字節
- int :?整型,在多數系統中占 4 個字節
- long :?長整型,在 32 位系統通常占 4 個字節,64 位系統一般占 8 個字節
- long long :?更長的長整型,至少占 8 個字節
浮點類型
- float :單精度浮點型,占 4 個字節,精度約為 6 - 7 位有效數字,用于存儲小數
- double :雙精度浮點型,占 8 個字節,精度約為 15 - 16 位有效數字,比
float
更精確 - long double :長雙精度浮點型,占用字節數因編譯器和系統而異,精度比
double
更高
構造數據類型
構造數據類型由基本數據類型其他構造數據類型組合而成。
- 數組 :一組相同類型元素的有序集合,元素在內存中連續存儲
- 結構體 :用戶自定義的數據類型,可包含不同類型的數據成員,將相關數據組合在一起
- 聯合體 :所有成員共享同一塊內存空間,同一時間只能使用一個成員
- 枚舉類型 :定義一組命名的整數常量,增強代碼可讀性
指針類型
這個之后會詳細講到有關于指針的。
- 指針存儲的是變量的內存地址,通過指針可直接訪問和修改內存中的數據
空類型
用void
表示,有以下用途:
- 函數返回值為空:函數不需要返回值時,使用
void
作為返回類型 - 函數參數為空:函數不接受參數時,使用
void
作為參數列表 - 通用指針:
void *
類型指針可指向任意類型數據,使用時需強制類型轉換
計算數據類型或變量所占用的內存字節數
sizeof用于計算數據類型或變量所占用的內存字節數。
基本語法
計算數據類型的大小
sizeof(數據類型);
如:
#include <stdio.h>int main() {printf("sizeof(int)= %ld\n", sizeof(int));return 0;
}
輸出的結果為??
可能有些人的程序輸出的結果不是4,那是因為有的是64位機有的是32位機。
- 32位:是計算機處理器(CPU)能夠一次處理或傳輸的數據寬度為32位
- 64位:是計算機處理器(CPU)能夠一次處理或傳輸的數據寬度為64位
進制轉換
上文講了位,存儲等。我們來學習下進制的轉換:
在日常生活里,十進制是最為常用的計數方式,不過在計算機領域,二進制和十六進制是比較常見的。下面來學習二進制、十進制、十六進制這三個進制之間的轉換。
二進制
二進制的概念
- 在計算機中,二進制用于表示數據和指令。二進制只有0和1兩個數碼,代表的是電子元件的開和關的兩種狀態。進位規則是 “逢二進一”,借位規則是 “借一當二”。
二進制與十進制的轉換
二進制 -> 十進制
- 將二進制數的每一位乘以2的相應冪次(冪次從右往左依次為0、1、2... ...),然后將結果相加。這次常用的逐位相加法。
- B是二進制的英文縮寫,D是十進制的英文縮寫
如,11010B -> D
= 0 * 2^0 + 1 * 2^1 + 0 * 2^3 + 1 * 2^4 + 1 * 2^5?
= 0 + 2 + 0 + 8 + 16
= 26
十進制 -> 二進制
- 把十進制轉換為二進制可以采取除2取余的方法,簡單來說就是:除二取余直至商0。再將余數倒序排列就得到對應的十進制數。
如,26D -> B
- 26 / 2 = 13,余為0
- 13 / 2 = 6,余為1
- 6 / 2 = 3,余為0
- 3 / 2 = 1,余為1
- 1 / 2 = 0,余為1
然后將余數從下向上排得到11010B。
十六進制
十六進制的概念
- 十六進制是一種基數為16的計數系統,它使用 0 - 9 十個數字和 A - F六個字母來表示 10 - 15 這六個數字
- 十六進制在計算機領域常用于表示內存地址、顏色值等。它可以很方便與二進制進行轉換,每4位二進制數可以用1位十六進制表示
二進制與十六進制的轉換
二進制 -> 十六進制
- 從二進制數的最右邊(低位)開始,每4位分為一組。如果最左邊(高位)的一組不足4位,則在左邊補0
- 將二進制轉十六進制,組合結果
- 十六進制可以用H表示
如,11010B -> H
- 分組,0001和1010
- 0001B轉換為十進制為1,在十六進制中對應的是1;1010B轉換為10,在十六進制中,10為A
- 組合結果為1A
十六進制 -> 二進制
- 拆分十六進制數
- 將每個十六進制數字轉換為4位二進制數
- 組合二進制數
如1A H -> B
- 拆分為1和A
- 1對應的二進制是0001,A對應的十進制是10,對應的二進制是1010
- 組合0001 1010,一般省略前面的0
- 結果為11010
小結
系統的學習了計算機的數據類型以及sizeof運算符;還有二進制、十六進制,以及這些進制之間的轉換。