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優秀許多。

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可顯示字符

二進制 十進制 十六進制 圖形
0010 0000 32 20 (空格)(␠)
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25  %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
二進制 十進制 十六進制 圖形
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
二進制 十進制 十六進制 圖形
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

注意:

字符常量必須用單引號標註起來,以區分是作爲字符變量還是字符常量出現。爲此,在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>頭文件

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章