一般來說,基本數據類型分爲整型、浮點型、字符型,C++中又包括布爾型。每種類型裏面又可以分爲若干種類型(爲了方便記憶,只列出常用的)。如下列出了四種基本數據類型。
類型 |
取值範圍 |
大致範圍 | |
---|---|---|---|
整型 | int |
-2147483648~+2147483648 (即-2^31~+(2^31-1)) |
-2*10^9~+2*10^9 |
long long |
-2^63~+(2^63-1) |
-9*10^18~+9*10^18 |
|
浮點型 | float |
-2^128~+2^128 (實際精度6~7位) |
實際精度6~7位 |
double |
-2^1024~+2^1024 (實際精度15~16位) |
實際精度15~16位 |
|
字符型 | char |
-128~+127 |
-128~+127 |
布爾型 | bool |
0(false)or 1(true) |
0(false)or 1(true) |
1.整型
整型一般可以分爲短整型(short)、整型(int)和長整型( long long),其中短整型(short)一般用不到,此處不再贅述。下面介紹整型(int)和長整型( long long),其中整型int也被稱爲 long int,長整型 long long也被稱爲 long long int。
①對整型int來說,一個整數佔用32bit,也即4Byte,取值範圍是2^31~+(2^31-1)。如果對範圍不太有把握,可以記住絕對值在10^9範圍以內的整數都可以定義成int型。
②對長整型long long來說,一個整數佔用64bit,也即8Byte,取值範圍是-2^63~+(2^63-1),也就是說,如果題目要求的整數取值範圍超過2147483647(例如10^10或者10^18),就得用long long型來存儲。
除此之外,對於整型數據,都可以在前面加個 unsigned,以表示無符號型,例如 unsigned int和 unsigned long long,佔用的位數和原先相同,但是把負數範圍挪到正數上來了。也就是說,unsigned int的取值範圍是0~2^32-1, unsigned long long的取值範圍是0~2^64-1。一般來說,很少會出現必須使用 unsigned int和 unsigned long long的情況,因此初學者只需要熟練使用int和 longlong即可。
簡單來說,需要記住的是,看到題目要求10^9以內或者說32位整數,就用int型來存放如果是10^18以內(例如10^10)或者說64位整數,就要用 long long型來存放。
2.浮點型
通俗來講,浮點型就是小數,一般可以分爲單精度(float)和雙精度( double)。
①對單精度float來說,一個浮點數佔用32bit,其中1bit作爲符號位、8bit作爲指數位、23bit作爲尾數位(瞭解即可),可以存放的浮點數的範圍是-2^128~+2^128,但是其有效精度只有6~7位(由2^23可以得到,讀者只需要知道6~7位有效精度即可)。這對一些精度要求比較高的題目是不合適的。
②對雙精度double來說,一個浮點數佔用64bit,其中依照浮點數的標準,1bit作爲符號位、11bit作爲指數位、52bit作爲尾數位,可以存放的浮點數的範圍是-2^1024~+2^1024,其有效精度有15~16位,比float優秀許多。
3.字符型
(1)字符變量和字符常量
在C語言中,字符常量使用ASCII碼統一編碼。標準ASCIi碼的範圍是0~127,其中包含了控制字符或通信專用字符(不可顯示)和常用的可顯示字符。在鍵盤上,通過敲擊可以在屏幕上顯示的字符就是可顯示字符,比如0~9、A~Z、a~z等都是可顯示字符,它們的ASCⅡ碼分別是48~57、65~90、97~122,不過具體數字不需要記住,只要知道小寫字母比大寫字母的ASCII碼值大32即可。ASCII表如下
ASCII控制字符
二進制 | 十進制 | 十六進制 | 縮寫 | 可以顯示的表示法 | 名稱/意義 |
---|---|---|---|---|---|
0000 0000 | 0 | 00 | NUL | ␀ | 空字符(Null) |
0000 0001 | 1 | 01 | SOH | ␁ | 標題開始 |
0000 0010 | 2 | 02 | STX | ␂ | 本文開始 |
0000 0011 | 3 | 03 | ETX | ␃ | 本文結束 |
0000 0100 | 4 | 04 | EOT | ␄ | 傳輸結束 |
0000 0101 | 5 | 05 | ENQ | ␅ | 請求 |
0000 0110 | 6 | 06 | ACK | ␆ | 確認迴應 |
0000 0111 | 7 | 07 | BEL | ␇ | 響鈴 |
0000 1000 | 8 | 08 | BS | ␈ | 退格 |
0000 1001 | 9 | 09 | HT | ␉ | 水平定位符號 |
0000 1010 | 10 | 0A | LF | ␊ | 換行鍵 |
0000 1011 | 11 | 0B | VT | ␋ | 垂直定位符號 |
0000 1100 | 12 | 0C | FF | ␌ | 換頁鍵 |
0000 1101 | 13 | 0D | CR | ␍ | 歸位鍵 |
0000 1110 | 14 | 0E | SO | ␎ | 取消變換(Shift out) |
0000 1111 | 15 | 0F | SI | ␏ | 啓用變換(Shift in) |
0001 0000 | 16 | 10 | DLE | ␐ | 跳出數據通訊 |
0001 0001 | 17 | 11 | DC1 | ␑ | 設備控制一(XON 啓用軟件速度控制) |
0001 0010 | 18 | 12 | DC2 | ␒ | 設備控制二 |
0001 0011 | 19 | 13 | DC3 | ␓ | 設備控制三(XOFF 停用軟件速度控制) |
0001 0100 | 20 | 14 | DC4 | ␔ | 設備控制四 |
0001 0101 | 21 | 15 | NAK | ␕ | 確認失敗迴應 |
0001 0110 | 22 | 16 | SYN | ␖ | 同步用暫停 |
0001 0111 | 23 | 17 | ETB | ␗ | 區塊傳輸結束 |
0001 1000 | 24 | 18 | CAN | ␘ | 取消 |
0001 1001 | 25 | 19 | EM | ␙ | 連接介質中斷 |
0001 1010 | 26 | 1A | SUB | ␚ | 替換 |
0001 1011 | 27 | 1B | ESC | ␛ | 跳出 |
0001 1100 | 28 | 1C | FS | ␜ | 文件分割符 |
0001 1101 | 29 | 1D | GS | ␝ | 組羣分隔符 |
0001 1110 | 30 | 1E | RS | ␞ | 記錄分隔符 |
0001 1111 | 31 | 1F | US | ␟ | 單元分隔符 |
0111 1111 | 127 | 7F | DEL | ␡ | 刪除 |
ASCII可顯示字符
|
|
|
注意:
字符常量必須用單引號標註起來,以區分是作爲字符變量還是字符常量出現。爲此,在C語言中,字符常量(必須是單個字符)必須用單引號標註,以表明它們是字符常量。
(2)轉義字符
上面提到,ASCII碼中有一部分是控制字符,是不可顯示的。像換行、刪除、Tab等都是控制字符。那麼在程序中怎樣表示ー個控制字符呢?對一些常用的控制字符,C語言中可以用一個右斜線加一些特定的字母來表示。例如,換行通過“n”來表示,Tab鍵通過“t”來表示。由於這種情況下斜線後面的字母失去了本身的含義,因此又稱爲“轉義字符”。在實際做題目時,比較常用的轉義字符就只有下面兩個,希望讀者能夠記住。
(3)字符串常量
字符串是由若干字符組成的串,在C語言中沒有單獨一種基本數據類型可以存儲(C++中有 string類型),只能使用字符數組的方式。因此這裏先介紹字符串常量。
上面提到,字符常量就是單個使用單引號標記的字符,那麼此處的字符串常量則是由雙引號標記的字符集,例如" WOAIDERENBUAIWO"就是一個字符串常量。
字符串常量可以作爲初值賦給字符數組,並使用%s的格式輸出。
最後指出,不能把字符串常量賦值給字符變量,因此 char c="abcd"的寫法是不允許的。
4.布爾型
布爾型在C++中可以直接使用,但在C語言中必須添加 stdbool.h頭文件纔可以使用。布爾型變量又稱爲“bool型變量”,它的取值只能是ture(真)或者 false(假),分別代表非零與零。在賦值時,可以直接使用ture或false進行賦值,或是使用整型常量對其進行賦值,只不過整型常量在賦值給布爾型變量時會自動轉換爲true(非零)或者 false(零)。注意:“非零”是包括正整數和負整數的,即1和-1都會轉換爲tmue。但是對計算機來說,true和 false在存儲時分別爲1和0,因此如果使用%d輸出bool型變量,則ture和 false會輸出1和0。(c++文件擴展名爲.cpp;C語言文件拓展名爲.c,需要添加 include< stdboolh>頭文件)