C語言支持的基本數據類型
通過前面的舉例分析,我們知道房子的類型,決定了房子的屬性。例如,一房一廳的房子,有一個房間的空間;兩房一廳的房子,有兩個房間的空間。同理,在C語言中,提供了「數據類型」,它可以定義變量。不同數據類型定義的變量,有不同的存儲空間和使用方式。
C語言支持的基本數據類型有:
(1) char類型,char類型稱為「字符」類型。一個字符是 ‘A’, ‘B’, ‘C’, ‘#’, ‘!’ 這樣的數據。char類型的變量稱為字符型變量,可以存放一個字符。char類型變量佔據1個位元組的存儲空間。
(2) short 類型,short類型稱為「短整型」。它用於存儲一個整數值,例如100,188這樣的整數值,short類型變量佔據2個位元組的存儲空間。
(3) int類型,int類型稱為「整型」。它用於存儲一個整數值,int類型變量佔據4個位元組的存儲空間。
(4) long類型,long類型稱為「長整型」。它用於存儲一個整數值,long類型變量佔據4個位元組的存儲空間。而且 long 類型可以組合成 long long 類型,它佔據8個位元組的存儲空間。
(5) float類型,float類型稱為「單精度浮點型」。它存放一個浮點數,例如12.345, 16.888這樣帶小數點的小數。float類型變量佔據4個位元組的存儲空間。
(6) double類型,double類型稱為「雙精度浮點數」。它存儲一個浮點數,double類型變量佔據8個位元組的存儲空間。
對於char、short、int和long類型,默認是「有符號數」類型,所以,能夠表示負數。那麼,它們可以結合unsigned關鍵字使用,表示無符號類型數據。
注意:float、double表示的浮點數類型,不可以與unsigned關鍵字組合使用。
我們可以歸納總結「有符號數類型」和「無符號數類型」的存儲容量和表示數值範圍如下表。
| 數據類型 | 容量(位數) | 取值範圍 |
| char | 8(1個位元組) | -128 ~ 127(-2^7 ~ 2^7-1) |
| unsigned char | 8(1個位元組) | 0 ~ 255(0 ~ 2^8 – 1) |
| short | 16(2個位元組) | -32767 ~ 32768(-2^15 ~ 2^15-1) |
| unsigned short | 16(2個位元組) | 0 ~ 65536(0 ~ 2^18-1) |
| int | 32(4個位元組) | -2147483648 ~ +2147483647(-2^31 ~ 2^31-1) |
| unsigned int | 32(4個位元組) | 0 ~ 4294967295(0 ~ 2^32-1) |
| long | 32 | -2147483648 ~ +2147483647(-2^31 ~ 2^31-1) |
| unsigned long | 32 | 0 ~ 4294967295(0 ~ 2^32-1) |
| long long | 64 | -9223372036854775808 ~9223372036854775807(-2^63 ~ 2^63-1) |
| unsigned long long | 64 | 0 ~ 18446744073709551615(0 ~ 2^64-1) |
char類型的最大值是2^7-1,unsigned char類型的最大值是2^8-1,可以看到,由於char類型變量的最高位作為符號位,只有7位作為數值位,而unsigned char類型的變量,全部8位都作為數值位。所以,能夠表示最大值的範圍不一樣。假設變量的數值位有N位,那麼,能夠表示的最大值是2的N次方減一,即 2^N – 1。例如數值位為1111 1111,此時,數值位有8位,那麼,它的值是1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6 + 1*2^7;如果這樣計算,比較繁瑣,那麼,我們可以思考:
1111 1111 + 1 = 1 0000 0000
所以,有:
1111 1111 = 1 0000 0000 – 1
= 1*2^8 – 1
通過這樣的方式計算,就可以快速得到N位全1的二進制,它的值是2^N – 1。
5.1 字符類型
在C語言中,定義了’A’、’B’、’C’、’#’、’?’這樣的符號為字符。一個字符可以存放到一個字符變量中。字符的特點是:
(1) 必須使用單引號 ‘ ‘ 把字符包含起來;
(2) 字符可以是ASCII表中字符集的字符;
C語言提供了關鍵字char表示「字符類型」;可以定義字符類型的變量;例如:

程序運行的輸出結果如下:

可以看到,用char關鍵字定義了字符類型的變量,分別定義了變量a和變量b,都是字符類型,並且給a變量存放了’X’字符,給b變量存放了’Y’字符。
最後,在printf()函數中,通過 %c 格式,輸出字符類型變量中存放的字符。
注意:給字符變量賦值的字符,必須使用單引號’ ‘把字符給包含起來。
一個字符在內存中存儲的是其ASCII值,那麼,我們可以把一個字符的ASCII值賦給一個字符變量,然後,再把它輸出。測試的例子如下。

程序運行結果如下:

可以看到,我們把 ‘0’ 字符的ASCII值賦給字符變量a,如同把字符 ‘0’ 賦給字符變量a一樣。因為,字符 ‘0’ 的ASCII值是48,在內存中就是存儲為48這個數值,所以,如同直接把ASCII值賦給字符變量。
通過這個例子,我們也區分了字符 ‘1’與數值1是有區別的。數值1的值就是1,但是,字符’1’的值是它的ASCII值,是49這個數值。
5.2 整數類型
在自然數中,100、1、99這樣的數值稱為「整數」。那麼,在C語言中,提供了相關的類型來存放整數值。
C語言提供了關鍵字short、int、long表示整數類型,可以定義整數變量。例如588數值,是一個整數值,那麼,可以存放在整數類型變量中。測試例子如下:

程序運行的輸出結果如下:

可以看到,在C語言中,提供了關鍵字short、int、long可以定義整數類型,而且是有符號數類型,所以,在變量y中,可以賦值負數。
注意char數據類型雖然是字符類型,但是,它有1個位元組的存儲空間,1個位元組的空間可以存儲8位二進制數據,可以表示為一個整數值。
在C語言中,關鍵字char、short、int、long數據默認都是有符號類型,所以存儲的數據可以表示負數。例如char類型的變量,容量是一個位元組,最高位是符號位,剩餘的7位是數據位。能夠表示最大的數值是0111 1111,十進制就是127。最小的數值是1000 0001,十進制就是-127。
5.3 浮點數類型
在自然數中,1.23、6.99這樣帶小數的數據,稱為:浮點數。在C語言中,提供了關鍵字float、double表示浮點數類型,可以定義浮點數變量。
如下是一個測試的例子:

程序運行的結果如下:

可以看到,我們定義了浮點數類型變量a1、a2,可以給它們賦值小數值。然後,通過 %f 格式輸出變量中的浮點數。注意:由於printf函數輸出浮點數帶精度部分,小數部分輸出6位,不足的補零。所以,1.23這樣的數據輸出1.230000,小數點有6位數。
注意:浮點數類型不能與unsigned關鍵字組合成「無符號浮點數」。如下是測試的例子:

編譯測試程序的結果如下:

可以看到,不能夠使用unsigned關鍵字來修飾float、double這樣的浮點數類型
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/280102.html
微信掃一掃
支付寶掃一掃