官术网_书友最值得收藏!

2.1 數據類型

2.1.1 程序引例

【例2.1】已知一個圓的半徑,求這個圓的周長和面積。

分析:如果用r代表圓的半徑,用g代表圓的周長,用s代表圓的面積,用pi代表圓周率π,那么圓的周長公式是g=2pi*r,圓的面積公式是s=pi*r2。在這兩個公式里,pi是圓周率,固定不變的,而半徑r是可變的,則圓的周長與圓的面積也是可變的,那么,這些元素如何在C語言里進行說明并表示出來,這就是本節的重點內容。

程序代碼如下:

圖2-1 例2.1運行結果

運行結果如圖2-1所示。

由圖中可以看到,r的值為整數1,而g、s為小數形式,也就是說,r與g、s是不同的數據類型。那么C語言的數據類型是怎樣規定的呢?

在C語言中,每個數據都屬于唯一的一種數據類型,沒有無類型的數據,C語言的數據類型如圖2-2所示。

圖2-2 C語言的數據類型

C語言的基本數據類型有三種:字符型、整型和實型(浮點型)。C語言的基本數據類型修飾符有四種:singed(有符號)、unsigned(無符號)、long(長型符)、short(短型符),這些類型修飾符可以與字符型或整型數據配合使用。基本數據類型和取值范圍如表2-1所示。

表2-1 C語言常用基本數據類型描述

說明:C語言中,整型數據的取值范圍隨著程序編譯系統的不同而不同。本書以C-Free 3.5作為程序調試環境。

2.1.2 標識符和關鍵字

所謂標識符是指用來標識程序中用到的變量名、函數名、類型名、數組名、文件名以及符號常量名等有效字符序列。

在C語言中,標識符的命名規則是:由字母(大小寫皆可)、數字及下畫線組成,且第一個字符必須是字母或下畫線。

由上述的標識符命名規則可知,下面的標識符名是合法的:

year、_123、Int

而下面的標識符是非法的:

#123、1_2

所謂關鍵字又被稱為保留字,它也是C語言的一種標識符,用來命名C語言程序中的語句、數據類型和變量屬性等。每個關鍵字都有固有的含義,不能另做其他用途,C語言中的所有關鍵字都使用小寫字母來表示。

2.1.3 常量

常量又稱常數,是指在程序運行過程中其值不可改變的量。C語言中的常量可分整型常量、實型常量和字符型常量。

(1)整型常量

整型常量又稱為整數,在C語言中,整數可以用三種數制來表示:

①十進制整型常量。十進制整型常量沒有前綴,其數碼為0~9。

②八進制整型常量。八進制整型常量必須以數字0開頭,其數碼取值范圍為0~7。

③十六進制整型常量。十六進制整型常量的前綴為0X或0x。其數碼取值范圍為0~9、A~F或a~f。

(2)實型常量

實型也稱為浮點型,實型常量也可稱為實數或浮點數。在C語言中,實數采用十進制表示,它有兩種形式:十進制小數形式和指數形式。

①十進制小數形式:小數形式是由數碼0~9和小數點組成(注意:必須有小數點)。

②指數形式:指數形式又稱科學計數法。其一般形式為:a E n(a表示十進制數,n表示指數),其數值為a×10n

注意:指數表示形式中E或e前后必須有數字,E或e后面的數字必須是整數。

【例2.2】整型常量和實型常量的輸出。

第一個printf語句,以十進制形式輸出用三種數制表示的整數,第二個printf語句,以小數形式和指數形式輸出實數,運行結果如圖2-3所示。

圖2-3 例2.2運行結果

(3)字符型常量

字符型常量是用單引號括起來的一個字符。例如:'A'、'a'等。

在C語言中,字符型常量有以下特點:

①字符型常量只能用單引號括起來,不能使用雙引號或其他括號。單引號是字符型常量的定界符,不是字符型常量的一部分。

②字符型常量只能存放一個字符,不能是多個字符。字符值以ASCII碼的形式存放在內存單元中。數字被定義為字符型之后就不能參與數值運算,也就是說'5'與5是不同的。

③轉義字符是一種特殊的字符型常量。轉義字符以反斜線“\”開頭,后面跟一個或幾個字符。轉義字符主要用來表示控制代碼,例如,“回車”、“換行”等。轉義字符具有特定的含義,不同于字符原有的意義,所以稱為“轉義”字符。常用轉義字符如表2-2所示。

表2-2 常用的轉義字符及其功能

表中最后兩行是用ASCII碼(八進制或十六進制)表示一個字符。例如,'\101'或'\x41'表示ASCII碼為十進制數65的字符'A'。其中'\101'中101是八進制,轉換成十進制是65,而'\x41'中x41是十六進制,轉換成十進制也是65。

【例2.3】字符型常量的輸出。

程序代碼如下:

運行結果如圖2-4所示。

圖2-4 例2.3運行結果

(4)字符串常量

字符串常量是用一對雙引號括起來的字符序列。例如,"hello"、""、"123"。字符串的長度等于字符串中包含的字符個數,例如,字符串"hello"的長度為5個字符。

字符串常量與字符型常量是不同的,它們之間主要的區別有:

①字符型常量使用單引號定界,字符串常量使用雙引號來定界。

②字符型常量只能是單個字符,字符串常量則可以包含一個或多個字符。

③可以把一個字符型常量賦給一個字符型變量,但不能把一個字符串常量賦給一個字符串變量,在C語言中沒有相應的字符串變量,可以用一個字符數組來存放一個字符串常量。

字符型常量占一個字節的存儲空間,字符串常量占的內存字節數等于字符串的長度加1,增加的一個字節中存放字符'\0',用于標志字符串的結束。

字符型常量'a'和字符串常量"a",雖然都只有一個字符,但在內存中的存儲情況是不同的。

'a'在內存中占一個字節,可表示為:

"a"在內存中占兩個字節,可表示為:

(5)符號常量

在C語言中,也可以用一個標識符來表示一個常量,稱為符號常量。符號常量在使用之前必須先定義,其一般形式如下:

#define標識符常量

【例2.4】已知商品的數量和單價,單價為常量,數量可變,求應付款。

程序代碼如下:

運行結果如圖2-5所示。

圖2-5 例2.4運行結果

如例2.4中,商品單價用PRICE表示,可寫為:#define PRICE 30

其中,define是關鍵字,前面加“#”,表示一條預處理命令(預處理命令都以“#”開頭),稱為宏定義命令。

該語句的功能是把標識符PRICE定義為其后的常量值30,定義后在程序中所有出現PRICE的地方均可以30來代替。符號常量的標識符是用戶自己定義的。

符號常量的特點:

①習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區別。

②符號常量與變量不同,符號常量的值在其作用域內不能改變,也不能再被賦值。

③使用符號常量的好處是:含義清楚,并且能做到“一改全改”。

2.1.4 變量

在程序運行過程中,其值可以改變的量稱為變量。一個變量應該有一個名字,在內存中占據一定的存儲單元。變量定義必須放在變量使用之前,一般放在函數體的開頭部分。要區分變量名和變量值兩個概念。在例2.1中,圓半徑r的值為1,則變量r在內存中的存儲形式如下:

C語言規定,所有變量在使用前必須先定義。

回顧例2.1中的兩行程序代碼:int r;和float s,g;

這兩行代碼功能是定義了一個整型變量r和兩個浮點型變量s,g。其中int和float都是數據類型標識符,是C語言的關鍵字,用來說明變量的類型,而r,s,g是變量名。

(1)變量定義的格式

變量定義的格式如下:

存儲類型符 數據類型符 變量名表;

說明:

①存儲類型符用來說明變量的存儲類型,存儲類型有自動類型(auto),寄存器類型(register),靜態類型(static),外部類型(extern)等,默認為自動類型。如果未對存儲類型做說明,則為自動類型。在例2.1中,變量定義語句都沒有聲明存儲類型,所以都按自動類型處理。

②數據類型符用來說明變量的數據類型,它可以是C語言中任意一種基本數據類型。

③變量名表中可以只有一個變量名,也可以有多個變量名;如果有多個變量名,各變量名之間用逗號分開。

(2)變量的賦值

定義變量后,在使用之前需要給變量一個初始值。在C語言中,可以通過賦值運算“=”給變量賦值。

變量賦值的一般格式是:

變量名=表達式;

變量的賦值常用的有以下兩種情況:

①先定義后賦值。如:

int r;

r=1;

②在定義變量的同時為其賦值,稱為變量的初始化。定義的變量可以全部初始化,也可以部分初始化。

例如,int r=1;,該語句即定義了整型變量r,同時為其賦初值為1。

變量在某一時刻只有一個確定的值,變量獲得新值后,其原始值被覆蓋。例如:

int r;

r=1;

r=2;

該程序段執行后,變量r的值不是1,而是2。

定義多個同類型變量并要給所有變量賦值,只能逐個處理,每個賦值表達式之間用逗號分開。例如,有三個整型變量x,y,z,且初始值都是10,則可以寫成如下形式:int x=10,y=10,z=10;

如果變量的類型與所賦數據的類型不一致,所賦數據將被轉換成與變量相同的類型。例如,int x=10.5;,該程序執行后,變量x的值是整數10。

主站蜘蛛池模板: 阿瓦提县| 惠来县| 偃师市| 牟定县| 克山县| 佛山市| 昭觉县| 青冈县| 中牟县| 贞丰县| 布拖县| 通州区| 同德县| 宁城县| 宕昌县| 城步| 石景山区| 鸡东县| 怀柔区| 陕西省| 庆阳市| 炉霍县| 祁门县| 满城县| 星子县| 潮安县| 惠来县| 定陶县| 南溪县| 西吉县| 正阳县| 二手房| 留坝县| 天水市| 龙岩市| 丰顺县| 宽甸| 凤台县| 旺苍县| 巴林右旗| 巨野县|