一)、變量類(lèi)型和表示方法
1.什么是變量?
一句話,變量是存儲(chǔ)數(shù)據(jù)的值的空間。由于數(shù)值的類(lèi)型有多種,有整數(shù)、小數(shù)(浮點(diǎn)數(shù))、字符等等,那么對(duì)應(yīng)的變量就有整型變量、浮點(diǎn)型變量、字符型變量。變量還有其他的具體分類(lèi)。整型變量還可具體分為無(wú)符號(hào)型、長(zhǎng)整型和短整型。浮點(diǎn)型也可分為單精度型、雙精度型和長(zhǎng)雙精度型。此外還可以分為靜態(tài)變量、外部變量、寄存器變量和自動(dòng)存儲(chǔ)變量。
那么變量我們總要給它取個(gè)名字吧,這個(gè)名字我們叫做標(biāo)識(shí)符。
標(biāo)識(shí)符的命名有一定的規(guī)則:
(1).標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三類(lèi)字符組成
(2).第一個(gè)字符必須是字母(第一個(gè)字符也可以是下劃線,但被視作系統(tǒng)自定義的標(biāo)識(shí)符)
(3).大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符,如A和a是兩個(gè)不同的標(biāo)識(shí)符
(4).標(biāo)識(shí)符可以任意長(zhǎng),但只有前32位有效。有些舊的C版本對(duì)外部標(biāo)識(shí)符的限制為6位。這是由于鏈接程序的限制所總成的,而不是C語(yǔ)言本身的局限性
(5).標(biāo)識(shí)符不能是C的關(guān)鍵字
2.從上面的規(guī)則中,有個(gè)關(guān)鍵字的概念。那么什么叫關(guān)鍵字呢?
從表面字意上也可以看出,關(guān)鍵字是C語(yǔ)言本身某些特性的一個(gè)表示,是唯一的代表某一個(gè)意思的。
下面列出ANSI標(biāo)準(zhǔn)定義的32個(gè)C語(yǔ)言的關(guān)鍵字,這些關(guān)鍵字在以后的學(xué)習(xí)中基本上都會(huì)用到,到時(shí)再說(shuō)它們的各自用法。
auto break case char const continue default
do double else enum extern float for
goto if int long register return short
signed sizeof static struct switch typedef
union unsigned void volatile while
C語(yǔ)言還包括一些不能用做標(biāo)識(shí)符的擴(kuò)展關(guān)鍵字。
asm cdecl _cs _ds _es far
huge interrupt near pascal _ss
所以在以后的學(xué)習(xí)中,在給變量命名時(shí)要避開(kāi)這些關(guān)鍵字。
3. Turbo C2.0規(guī)定所有變量在使用前都必須加以說(shuō)明。一條變量說(shuō)明語(yǔ)句由數(shù)據(jù)類(lèi)型和其后的一個(gè)或多個(gè)變量名組成。變量說(shuō)明的形式如下:
類(lèi)型 <變量表>;
這里類(lèi)型是指Turbo C2.0的有效數(shù)據(jù)類(lèi)型。變量表是一個(gè)或多個(gè)標(biāo)識(shí)符名,每個(gè)標(biāo)識(shí)符之間用,分隔。
(二)、整型變量
整型變量是用來(lái)存儲(chǔ)整數(shù)的。
整型變量又可具體分為好幾種,最基本的整型變量是用類(lèi)型說(shuō)明符int聲明的符號(hào)整型,形式如下:
int Counter;
這里int是類(lèi)型說(shuō)明符,Counter是變量的名字。
整型變量可以是有符號(hào)型、無(wú)符號(hào)型、長(zhǎng)型、短型或象上面定義的普通符號(hào)整型。
整型是16位的,長(zhǎng)整型是32位,短整型等價(jià)于整型。
以下是幾種整型變量的聲明示例:
long int Amount;
long Amount;
signed int Total;
signed Total;
unsigned int Offset;
unsigned Offset;
short int SmallAmt;
short SmallAmt;
unsigned short int Month;
unsigned short Month;
從上面的示例可以看出,當(dāng)定義長(zhǎng)整型、短整型、符號(hào)整型或無(wú)符號(hào)整型時(shí),可以省略關(guān)鍵字int。
注明:
1.用signed對(duì)整型變量進(jìn)行有符號(hào)指定是多余的,因?yàn)槌怯胾nsigned指定為無(wú)符號(hào)型,否則整型都是有符號(hào)的。
2.當(dāng)一個(gè)變量有幾重特性時(shí),聲明關(guān)鍵字的順序可以任意。以下幾種聲明是等價(jià)的:
unsigned long T1;
long unsigned T2;
unsigned long int T3;
unsigned int long T4;
long unsigned int T5;
long int unsigned T6;
int unsigned long T7;
int long unsigned T8;
(三)、浮點(diǎn)類(lèi)型變量
顧名思義,浮點(diǎn)類(lèi)型變量是用來(lái)存儲(chǔ)帶有小數(shù)的實(shí)數(shù)的。
C語(yǔ)言中有三種不同的浮點(diǎn)類(lèi)型,以下是對(duì)這三種不同類(lèi)型的聲明示例:
float Amount;
double BigAmount;
long double ReallyBigAmount;
這里Amount,BigAmount,ReallyBigAmount都是變量名。
浮點(diǎn)型都是有符號(hào)的。
(四)、字符型變量
字符型變量中所存放的字符是計(jì)算機(jī)字符集中的字符。對(duì)于PC機(jī)上運(yùn)行的C系統(tǒng),字符型數(shù)據(jù)用8位單字節(jié)的ASCII碼表示。程序用類(lèi)型說(shuō)明符char來(lái)聲明字符型變量:
char ch;
這條聲明語(yǔ)句聲明了一個(gè)字符型變量,標(biāo)識(shí)符為ch。當(dāng)以這種形式聲明變量之后,程序可以在表達(dá)式中引用這個(gè)變量,關(guān)于語(yǔ)句和表達(dá)式的知識(shí)在后面將會(huì)介紹。
字符數(shù)據(jù)類(lèi)型事實(shí)上是8位的整型數(shù)據(jù)類(lèi)型,可以用于數(shù)值表達(dá)式中,與其他的整型數(shù)據(jù)同樣使用。在這種情況下,字符型變量可以是有符號(hào)的,也可以是無(wú)符號(hào)的。對(duì)于無(wú)符號(hào)的字符型變量可以聲明為:
unsigned char ch;
除非聲明為無(wú)符號(hào)型,否則在算術(shù)運(yùn)算和比較運(yùn)算中,字符型變量一般作為8位有符號(hào)整型變量處理。
還有其他的如指針型變量,void型變量,以后再介紹。
二、常量
常量的意思就是不可改變的量,是一個(gè)常數(shù)。同變量一樣,常量也分為整型常量、浮點(diǎn)型常量、字符型常量,還有字符串常量、轉(zhuǎn)義字符常量和地址常量。
(一)、整型常量
整型常量可以是長(zhǎng)整型、短整型、有符號(hào)型、無(wú)符號(hào)型。在Tubbo C 2.0里有符號(hào)整型常量的范圍從-32768到32767,無(wú)符號(hào)整型的為0到65535;有符號(hào)長(zhǎng)整型的范圍為-2147483648到2147483647。無(wú)符號(hào)長(zhǎng)整型的范圍為0到4294967295。短整型同字符型。
可以指定一個(gè)整型常量為二進(jìn)制、八進(jìn)制或十六進(jìn)制,如以下語(yǔ)句:
-129, 0
x12fe, 0177
常量的前面有符號(hào)0x,這個(gè)符號(hào)表示該常量是十六進(jìn)制表示。如果前面的符號(hào)只有一個(gè)字母0,那么表示該常量是八進(jìn)制。
有時(shí)我們?cè)诔A康暮竺婕由戏?hào)L或者U,來(lái)表示該常量是長(zhǎng)整型或者無(wú)符號(hào)整型:
22388L, 0
x4efb2L, 40000U
后綴可以是大寫(xiě),也可以是小寫(xiě)。
(二)、浮點(diǎn)型常量
一個(gè)浮點(diǎn)型常量由整數(shù)和小數(shù)兩部分構(gòu)成,中間用十進(jìn)制的小數(shù)點(diǎn)隔開(kāi)。有些浮點(diǎn)樹(shù)非常大或者非常小,用普通方法不容易表示,可以用科學(xué)計(jì)數(shù)法或者指數(shù)方法表示。下面是一個(gè)實(shí)例:
3.1416, 1.234E-30, 2.47E201
注意在C語(yǔ)言中,數(shù)的大小也有一定的限制。對(duì)于float型浮點(diǎn)數(shù),數(shù)的表示范圍為-3.402823E38到3.402823E38,其中-1.401298E-45到1.401298E-45不可見(jiàn)。double型浮點(diǎn)型常數(shù)的表示范圍為-1.79E308到1.79E308,其中-4.94E-324到4.94E-324不可見(jiàn)。
在浮點(diǎn)型常量里我們也可以加上后綴。
FloatNumber=1.6E10F;
Lo
ngDoubleNumber=3.45L;
后綴可大寫(xiě)也可小寫(xiě)。
說(shuō)明:
1. 浮點(diǎn)常數(shù)只有一種進(jìn)制(十進(jìn)制)。
2. 所有浮點(diǎn)常數(shù)都被默認(rèn)為double。
3. 絕對(duì)值小于1的浮點(diǎn)數(shù), 其小數(shù)點(diǎn)前面的零可以省略。如:0.22可寫(xiě)為.22, -0.0015E-3可寫(xiě)為-.0015E-3。
4. Turbo C默認(rèn)格式輸出浮點(diǎn)數(shù)時(shí), 最多只保留小數(shù)點(diǎn)后六位
(三)、字符型常量
字符型常量所表示的值是字符型變量所能包含的值。我們可以用ASCII表達(dá)式來(lái)表示一個(gè)字符型常量,或者用單引號(hào)內(nèi)加反斜杠表示轉(zhuǎn)義字符。
'A', '\
x2f', '\013';
其中:\
x表示后面的字符是十六進(jìn)制數(shù),\0表示后面的字符是八進(jìn)制數(shù)。
注意:在Turbo C 2.0中,字符型常量表示數(shù)的范圍是-128到127,除非你把它聲明為unsigned,這樣就是0到255。
(四)、字符串常量
字符串常量就是一串字符,用雙引號(hào)括起來(lái)表示。
Hello,World!
\nEnter selection:
\aError!!!
(五)、轉(zhuǎn)義字符
上面我們見(jiàn)到的\
x,\n,\a等等都是叫轉(zhuǎn)義字符,它告訴編譯器需要用特殊的方式進(jìn)行處理。下面給出所有的轉(zhuǎn)義字符和所對(duì)應(yīng)的意義:
轉(zhuǎn)義字符 描述
\' 單引號(hào)
\ 雙引號(hào)
\\ 反斜杠
\0 空字符
\0nnn 八進(jìn)制數(shù)
\a 聲音符
\b 退格符
\f 換頁(yè)符
\n 換行符
\r 回車(chē)符
\t 水平制表符
\v 垂直制表符
\
x 十六進(jìn)制符
它們的具體用法我們到講輸出語(yǔ)句時(shí)再介紹。
(六)、地址常量
我們前面說(shuō)的變量是存儲(chǔ)數(shù)據(jù)的空間,它們?cè)趦?nèi)存里都有對(duì)應(yīng)的地址。在C語(yǔ)言里可以用地址常量來(lái)引用這些地址,如下:
&Counter, ∑
&是取地址符,作用是取出變量(或者函數(shù))的地址。在后面的輸入語(yǔ)句和指針里還會(huì)說(shuō)明。
這一節(jié)所講到的變量和常量知識(shí)可以說(shuō)是在一切程序中都要用到,特別是變量的聲明和命名規(guī)則。