C语言变量类型及其表示范围
一般來說,基本數據類型分為整型、浮點型、字符型,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優(yōu)秀許多。
3.字符型
(1)字符變量和字符常量
在C語言中,字符常量使用ASCII碼統(tǒng)一編碼。標準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 | ? | 區(qū)塊傳輸結束 |
| 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可顯示字符
| ? |
| ? |
|
注意:
字符常量必須用單引號標注起來,以區(qū)分是作為字符變量還是字符常量出現。為此,在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都會轉換為true。但是對計算機來說,true和 false在存儲時分別為1和0,因此如果使用%d輸出bool型變量,則ture和 false會輸出1和0。(c++文件擴展名為.cpp;C語言文件拓展名為.c,需要添加 include< stdboolh>頭文件)
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的C语言变量类型及其表示范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xp系统禁止开机启动服务器,win xp
- 下一篇: unity3d之角色的移动篇 -- 俯视