Posted on 2008-04-19 23:41
silentneil 閱讀(427)
評(píng)論(0) 編輯 收藏 引用
第1章 C語(yǔ)言概述
1.1 C語(yǔ)言出現(xiàn)的歷史背景
C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言,即可用來(lái)寫系統(tǒng)軟件,也可用來(lái)寫應(yīng)用軟件。
C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的。
早期的C語(yǔ)言運(yùn)行在UNIX操作系統(tǒng)上,后來(lái)運(yùn)行在DOS操作系統(tǒng)上,現(xiàn)在的C語(yǔ)言可運(yùn)行在Windos操作系統(tǒng)上。
C語(yǔ)言有許多版本,我們使用的是Turbo C 2.0。
P1,說(shuō)明。
1.2 C語(yǔ)言的特點(diǎn)
C語(yǔ)言有許多優(yōu)于其它語(yǔ)言的特點(diǎn):
(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。
C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9個(gè)控制語(yǔ)句,書寫形式自由。
P2,表1.1。
(2)運(yùn)算符豐富。
C共有34種運(yùn)算符,如+、-等。
P2,說(shuō)明。
(3)數(shù)據(jù)結(jié)構(gòu)豐富。
C有整型、實(shí)型等多種數(shù)據(jù)結(jié)構(gòu)。
P3,說(shuō)明。
(4)具有結(jié)構(gòu)化的控制語(yǔ)句。
C有if…else、while等多種結(jié)構(gòu)化的控制語(yǔ)句。
P3,說(shuō)明。
(5)語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。
如對(duì)數(shù)組下標(biāo)越界不作檢查等。
P3,說(shuō)明。
(6)C語(yǔ)言可進(jìn)行位運(yùn)算。
這是C區(qū)別于其它高級(jí)語(yǔ)言的主要特點(diǎn)。
P3,說(shuō)明。
(7)生成目標(biāo)代碼質(zhì)量高。
這也是C的優(yōu)于其它高級(jí)語(yǔ)言之處。
P3,說(shuō)明。
(8)C程序可移植性好。
即C程序可基本不做修改移到不同的計(jì)算機(jī)上運(yùn)行。
P3,說(shuō)明。
1.3 簡(jiǎn)單的C程序介紹
P4,例1.1,見(jiàn)ex1-1.c。
程序功能:打印一個(gè)字符串,并輸出一個(gè)換行符。
P4,例1.2,見(jiàn)ex1-2.c。
程序功能:求兩個(gè)數(shù)之和。
P5,例1.3,見(jiàn)ex1-3.c。
程序功能:求兩個(gè)數(shù)的較大者。
分析這三個(gè)例子的執(zhí)行過(guò)程。
說(shuō)明:
4
C程序是由函數(shù)組成的。在上面的例子中的函數(shù)有:main、printf、scanf和max。其中main是主函數(shù),printf、scanf是庫(kù)函
數(shù),max是自定義函數(shù)。一個(gè)C程序一定要有一個(gè)主函數(shù)。庫(kù)函數(shù)是放在*.h的庫(kù)函數(shù)文件中,只要直接調(diào)用就可。自定義函數(shù)要由用戶先定義后調(diào)用。
5 認(rèn)識(shí)一下C函數(shù)
C函數(shù)定義的一般格式為:
函數(shù)類型 函數(shù)名(形參類型 形式參數(shù),…)
{
數(shù)據(jù)聲明部分;
函數(shù)執(zhí)行部分;
}
C函數(shù)調(diào)用的一般格式為:
函數(shù)名(實(shí)際參數(shù),…)
(3)一個(gè)C程序總是從main主函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在程序中的位置如何。主函數(shù)可以調(diào)用子函數(shù),子函數(shù)還可以調(diào)用子子函數(shù)。因此C程序是層次結(jié)構(gòu)的。
(4)C程序一行可以寫多個(gè)語(yǔ)句,每個(gè)語(yǔ)句以“;”結(jié)束。C程序是區(qū)分大小寫字母的。C程序本身沒(méi)有輸入輸出語(yǔ)句,其輸入輸出是由庫(kù)函數(shù)printf和scanf來(lái)完成的。/*…*/是C的注釋語(yǔ)句。
1.4 C程序的上機(jī)步驟
C程序編寫好后,要經(jīng)過(guò)編輯、編譯、連接與運(yùn)行四個(gè)步驟,這四個(gè)步驟的作用分別是:
編輯:把C語(yǔ)言源程序輸入計(jì)算機(jī)并進(jìn)行修改存盤,生成*.c的源程序文件。
編譯:用C編譯程序?qū)?.c的源程序文件進(jìn)行編譯,生成*.obj的二進(jìn)制文件。
連接:把*.obj的二進(jìn)制文件與系統(tǒng)標(biāo)準(zhǔn)模塊進(jìn)行連接,生成*.exe的可執(zhí)行文件。
運(yùn)行:執(zhí)行*.exe的可執(zhí)行文件,輸出執(zhí)行結(jié)果。
以上步驟均可在Turbo C的工作平臺(tái)上進(jìn)行,啟動(dòng)Turbo C,就可以進(jìn)行編輯,打命令Ctrl+F9,就可以進(jìn)行編譯、連接和運(yùn)行,打命令A(yù)lt+F5,就可看到執(zhí)行結(jié)果。
舉例說(shuō)明,見(jiàn)ex1-1.c。
1.5 Turbo C常用命令簡(jiǎn)介
1. 啟動(dòng)和退出
啟動(dòng):在DOS下打TC,或在Windows下創(chuàng)建快捷命令執(zhí)行。
退出:Alt+X
2. 程序的編輯
簡(jiǎn)單編輯:Ins:插入/改寫 Backspace:刪除前一字符
Del:刪除當(dāng)前字符 Ctrl+Y:刪除一行
塊操作:Ctrl+KB、Ctrl+KK:定義塊首、尾
Ctrl+KC、Ctrl+KV、Ctrl+KY:塊復(fù)制、塊移動(dòng)、塊刪除
Ctrl+KH:取消塊定義
3. 程序載入與存盤
F3:載入程序 F6:切換窗口
F2:存盤 Alt+FN:新建程序
4. 編譯和運(yùn)行
Ctrl+F9:編譯連接執(zhí)行程序 Alt+F5:查看執(zhí)行結(jié)果
Ctrl+F7:添加監(jiān)視表達(dá)式 F7:進(jìn)入子函數(shù)單步執(zhí)行
F8:越過(guò)子函數(shù)單步執(zhí)行 Ctrl+F2:取消單步執(zhí)行
舉例說(shuō)明,見(jiàn)ex1-1.c。
第2章 程序的靈魂-算法
一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容:
3 對(duì)數(shù)據(jù)的描述:即程序中的數(shù)據(jù)要指定它的類型和組織形式,也稱數(shù)據(jù)結(jié)構(gòu)。
4 對(duì)操作的描述:即程序中對(duì)要做的事要指明它的操作步驟,也稱算法。
算法是程序的靈魂,也就是說(shuō),要計(jì)算機(jī)解決實(shí)際中的問(wèn)題,“怎么解”是程序設(shè)計(jì)的關(guān)鍵。
2.1 算法的概念
(1)算法的定義
計(jì)算機(jī)算法:就是要計(jì)算機(jī)解決問(wèn)題的操作步驟。
P13,例。
(2)算法的分類
計(jì)算機(jī)算法可分為兩類:數(shù)值算法和非數(shù)值算法。
P14,例。
2.2 簡(jiǎn)單算法舉例
P14,例2.1。
注意:解決同一問(wèn)題可有不同的算法,算法有優(yōu)劣之分。
P15,例2.2。
注意:循環(huán)是算法中常用的手段。
2.3 算法的特性
算法具有如下特性:
(1)有窮性
即經(jīng)過(guò)有限步就能夠完成。
P14,例2.1。P15,例2.2。
(2)確定性
即每一步都是確定的。
P14,例2.1。P15,例2.2。
(3)有零個(gè)或多個(gè)輸入
即一個(gè)算法必須輸入的數(shù)據(jù)可以是零個(gè)或多個(gè)。
P14,例2.1。P15,例2.2。
(4)有一個(gè)或多個(gè)輸出
即一個(gè)算法可以輸出一個(gè)或多個(gè)數(shù)據(jù)。
P14,例2.1。P15,例2.2。
(5)有效性
即算法中每一步驟都能有效地執(zhí)行,并得到確定的結(jié)果。
P14,例2.1。P15,例2.2。
2.4 怎樣表示一個(gè)算法
算法的表示法有多種,敘述如下:
(1)用自然語(yǔ)言表示
即把算法用人們?nèi)粘J褂玫恼Z(yǔ)言表示出來(lái)。
P14,例2.1。P15,例2.2。
特點(diǎn):常常具有不確定性,不宜采用。
(2)用流程圖表示
即把算法用一些特定的符號(hào)和圖形表示出來(lái)。
P20,例2.6,例2.7。
特點(diǎn):這是一種較好的表示法,經(jīng)常采用。
(3)用N-S圖表示
即把算法用一些特定的符號(hào)和圖形表示出來(lái)。
P26,例2.11,例2.12。
特點(diǎn):這也是一種較好的表示法,經(jīng)常采用。
(4)用偽代碼表示
即把算法用一些稱為偽代碼的文字和符號(hào)表示出來(lái)。
P29,例2.16,例2.17。
特點(diǎn):這也是一種較好的表示法,經(jīng)常采用。
(5)用計(jì)算機(jī)語(yǔ)言表示
即把算法用某種計(jì)算機(jī)語(yǔ)言符號(hào)表示出來(lái)。
P31,例2.20,例2.21。
特點(diǎn):這當(dāng)然是一種很好的表示法,可以輸入計(jì)算機(jī)執(zhí)行。
2.5 結(jié)構(gòu)化程序設(shè)計(jì)方法
算法有三種基本結(jié)構(gòu),它們是:
(1)順序結(jié)構(gòu):即算法的執(zhí)行是按順序一步接著一步的執(zhí)行。
(2)選擇結(jié)構(gòu):即算法的執(zhí)行是對(duì)某些步驟可有選擇的執(zhí)行。
(3)循環(huán)結(jié)構(gòu):即算法的執(zhí)行是對(duì)某些步驟可有限次的重復(fù)執(zhí)行。
這三種基本結(jié)構(gòu)的流程圖見(jiàn)P23,圖2.14,圖2.15,圖2.16,圖2.17。用這三種基本結(jié)構(gòu)設(shè)計(jì)程序稱為結(jié)構(gòu)化程序設(shè)計(jì)。
結(jié)構(gòu)化程序設(shè)計(jì)的方法指的是:
1 自頂向下
2 逐步細(xì)化
3 模塊化設(shè)計(jì)
4 結(jié)構(gòu)化編碼
P32,例。
第3章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式
3.1 C的數(shù)據(jù)類型
數(shù)據(jù)是程序的必要組成部分,也是程序處理的對(duì)象。C規(guī)定,在程序中使用的每一個(gè)數(shù)據(jù)必須屬于某一數(shù)據(jù)類型。
C語(yǔ)言中所有的數(shù)據(jù)類型見(jiàn)P38。
3.2 常量與變量
在程序運(yùn)行過(guò)程中,值保持不變的量稱為常量,值可能發(fā)生變化的量稱為變量。
3.2.1 常量與符號(hào)常量
1. 常量
常量是日常所說(shuō)的常數(shù)、字符、字符串等。
P38,例。
2. 符號(hào)常量
用#define定義的用標(biāo)識(shí)符來(lái)表示的常量。
格式:#define 常量名 常量
功能:定義一個(gè)符號(hào)常量
P38,例3.1。
說(shuō)明:常量名必須是一個(gè)標(biāo)識(shí)符。
3.2.2 變量
1. 標(biāo)識(shí)符
標(biāo)識(shí)符是用來(lái)表示符號(hào)常量、變量、數(shù)組、函數(shù)、過(guò)程、類型及文件的名字的。
標(biāo)識(shí)符的命名規(guī)則:
(1)以字母或下劃線開(kāi)頭,由字母、數(shù)字和下劃線組成;
(2)不能與關(guān)鍵字同名,最好不要與庫(kù)函數(shù)名同名;
(3)長(zhǎng)度無(wú)限定,但不同版本的C編譯時(shí)有自己的規(guī)定;
(4)區(qū)分大小寫。
P40,例。
2. 變量的聲明
格式:類型名 變量名,… ;
功能:聲明變量。
說(shuō)明:(1)變量名必須是一個(gè)標(biāo)識(shí)符,變量必須先聲明后使用;
(2)變量一旦聲明,系統(tǒng)就為它開(kāi)辟一個(gè)相應(yīng)類型的存儲(chǔ)空間;
(3)變量所占用的存儲(chǔ)空間的首地址稱為該變量的地址。
P40,例。
3. 變量的賦值
格式:變量名=表達(dá)式;
功能:把=號(hào)右邊表達(dá)式的值賦給=號(hào)左邊的變量。
P40,例。
3.3 整型數(shù)據(jù)
3.3.1 整型常量的表示方法
整型常量常用三種形式表示:
(1)十進(jìn)制:直接寫;
(2)八進(jìn)制:前加0;
(3)十六進(jìn)制:前加0X或0x。
P41,例。
3.3.2 整型變量
1. 整型數(shù)據(jù)在內(nèi)存中的存放形式
整型數(shù)據(jù)在內(nèi)存中采用定點(diǎn)表示。
定點(diǎn)表示有原碼、反碼、補(bǔ)碼之分,一般在機(jī)內(nèi)使用補(bǔ)碼。
原碼:最高位為符號(hào)位,小數(shù)點(diǎn)定在最低位之后,數(shù)值用二進(jìn)制表示。
反碼:正數(shù)的反碼與原碼一樣,負(fù)數(shù)的反碼除符號(hào)位外各位取反。
補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼一樣,負(fù)數(shù)的補(bǔ)碼是反碼加1。
例1:整數(shù)10的16位定點(diǎn)表示
因:(10)10=(1010)2
故:整數(shù)10的16位定點(diǎn)表示為
原碼:
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
反碼:
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
補(bǔ)碼:
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
例2:整數(shù)-10的16位定點(diǎn)表示
因:(-10)10=(-1010)2
故:整數(shù)-10的16位定點(diǎn)表示為
原碼:
1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
反碼:
1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
補(bǔ)碼:
1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
現(xiàn)代計(jì)算機(jī)一般用補(bǔ)碼表示。
2. 整型變量的分類
(1)有三種整型變量
整型: int
短整型:short [int]
長(zhǎng)整型:long [int]
(2)整型變量的分類
每種整型變量都可以是無(wú)符號(hào)的,無(wú)符號(hào)前加unsigned,有符號(hào)前加signed或省缺,于是可有6類整型變量。
P42,例。
(3)整型變量占用的存儲(chǔ)空間及取值范圍
P43,表3.1。
3. 整型變量的聲明
格式:[unsigned] int|short|long 變量名,…;
功能:聲明整型變量。
P44,例,例3.2。
4. 整型數(shù)據(jù)的溢出
int型的取值范圍為-32768~32767(-215~215-1),超出這個(gè)范圍稱為溢出,此時(shí)可能輸出難以理解的結(jié)果。
P44,例,例3.3。
3.3.3 整型常量的類型
整型常量一般按整型數(shù)據(jù)的取值范圍自動(dòng)劃定,但也可強(qiáng)制規(guī)定它是什么類型,規(guī)則是:
無(wú)符號(hào)整型后加u或U;
長(zhǎng)整型后加l或L。
P45,(1)~(5)
3.4 實(shí)型數(shù)據(jù)
3.4.1 實(shí)型常量的表示方法
實(shí)型常量常用二種形式表示:
(1)十進(jìn)制小數(shù)形式:直接寫,要有小數(shù)點(diǎn),前或后至少要有一個(gè)數(shù);
(2)指數(shù)形式:用e或E的前后加數(shù)據(jù)表示,前面是一個(gè)小數(shù),后面是一個(gè)整數(shù)。
P45,例。
3.4.2 實(shí)型變量
1. 實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
實(shí)型數(shù)據(jù)在內(nèi)存中采用浮點(diǎn)表示
方法:設(shè)總位數(shù)為16,高12位為尾數(shù),低4位為階碼。尾數(shù)與階碼最高位為符號(hào)位,尾數(shù)小數(shù)點(diǎn)定在最高位之后,階碼小數(shù)點(diǎn)定在最低位之后。
例1:實(shí)數(shù)10.0的16位浮點(diǎn)表示
因:(10.0)10=(0.1)10×10(2)10=(0.1)2×10(10)2
故:實(shí)數(shù)10.0的16位浮點(diǎn)表示為
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0
例2:實(shí)數(shù)-10.0的16位浮點(diǎn)表示
因:(-10.0)10=(-0.1)10×10(2)10=(-0.1)2×10(10)2
故:實(shí)數(shù)-10.0的16位浮點(diǎn)表示為
1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0
注意:(1)位數(shù)一般實(shí)數(shù)是32位,表示法類似;
(2)階碼與尾數(shù)的位數(shù)不同的計(jì)算機(jī)有不同的規(guī)定。
(3)數(shù)據(jù)進(jìn)行轉(zhuǎn)化表示時(shí),尾數(shù)表示為±0.a…的形式,且a不為0,故表示是唯一的。
(4)以上階碼與尾數(shù)是原碼表示,實(shí)際上應(yīng)轉(zhuǎn)成補(bǔ)碼。
2. 實(shí)型變量的分類
(1)有三種實(shí)型變量
單精度: float
雙精度: double
長(zhǎng)雙精度:long double
(2)占用的存儲(chǔ)空間及取值范圍
P46,表3.2。
(3)實(shí)型變量的聲明
格式:float | double |long double 變量名,…;
功能:聲明實(shí)型變量。
P46,例。
3. 實(shí)型數(shù)據(jù)的舍入誤差
由于單精度實(shí)型只保留7位有效數(shù)據(jù),故實(shí)型數(shù)據(jù)超出7位時(shí)會(huì)造成舍入誤差。
P47,例3.4。
3.4.3 實(shí)型常量的類型
實(shí)型常量一般按雙精度double來(lái)處理,但也可強(qiáng)制規(guī)定它是什么類型,規(guī)則是:
單精度后加f或F;
雙精度后加l或L。
P47,例。
3.5 字符型數(shù)據(jù)
3.5.1 字符常量
(1)一般字符常量
是用單撇號(hào)括起來(lái)的一個(gè)字符。
P48,例。
(2)特殊字符常量
是以反斜捍“\”開(kāi)頭后跟一些字母或數(shù)字組成的字符。
P48,表3.3。
P49,例3.5。
3.5.2 字符變量
只有一種類型:char
聲明格式:char變量名,…;
字符變量可以用來(lái)存放一個(gè)字符。
P49,例。
3.5.3 字符數(shù)據(jù)在內(nèi)存中的存放形式
字符型數(shù)據(jù)在計(jì)算機(jī)內(nèi)以ASCII碼的形式存放,每個(gè)字符占用一個(gè)字節(jié)。
方法:查ASCII碼表,最高位填0。
例:字符’a’的存儲(chǔ)形式
因:(a)字符=(97)10進(jìn)ASCII碼=(1100001)2進(jìn)ASCII碼
故:字符’a’的存儲(chǔ)形式為
0 1 1 0 0 0 0 1
P50,例3.6,例3.7。
注意:一般字符的ASCII碼值范圍為0~127,無(wú)符號(hào)字符的ASCII碼值范圍為0~255。
3.5.4 字符串常量
(1)字符串常量
是用雙撇號(hào)括起來(lái)的若干個(gè)字符。
P52,例。
(2)字符串常量的存儲(chǔ)
字符串常量的存儲(chǔ)是每個(gè)字符占用一個(gè)字節(jié),尾部再加一個(gè)\0作為結(jié)束符。于是長(zhǎng)度為n的字符串占用n+1個(gè)字節(jié)的存儲(chǔ)空間。
P52,例。
3.6 變量賦初值
格式:類型名 變量名=常量表達(dá)式,… ;
功能:聲明變量并賦初值。
P53,例。
3.7 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算
各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算時(shí)會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換。
規(guī)則:(1)char,short型轉(zhuǎn)為int型;
(2)float型轉(zhuǎn)為double型;
(3)不同類型由低向高轉(zhuǎn)換,即int →unsigned →long →double
P54,圖3.10。
P54,例。
3.8 算術(shù)運(yùn)算符與算術(shù)表達(dá)式
3.8.1 C的運(yùn)算符簡(jiǎn)介
C語(yǔ)言的運(yùn)算符有13類,P55。
學(xué)習(xí)運(yùn)算符注意如下幾點(diǎn):
(1)運(yùn)算符的功能:如+號(hào)運(yùn)算的意義。
(2)與運(yùn)算量的關(guān)系:如單目、雙目,運(yùn)算量的類型等。
(3)運(yùn)算的優(yōu)先級(jí):如先* /后+-。
(4)結(jié)合方向:如算術(shù)運(yùn)算從左到右,賦值從右到左。
(5)結(jié)果的類型:如兩個(gè)整型數(shù)相加還是整型數(shù)。
3.8.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
1. 基本的算術(shù)運(yùn)算符
基本的算術(shù)運(yùn)算符有:+、-、*、/、%
P55,例。
注意:(1)+、-可作單目運(yùn)算符,也可作雙目運(yùn)算符。
(2)/ 運(yùn)算對(duì)整形是封閉的,如5/3的值是1。
2. 算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向
(1)優(yōu)先級(jí):①單目+、-②*、/、%③雙目+、-
(2)結(jié)合方向:從左到右
P55,例。
3. 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
格式:(類型標(biāo)識(shí)符)表達(dá)式
功能:把表達(dá)式強(qiáng)制為類型標(biāo)識(shí)符指定的類型。
優(yōu)先級(jí):與單目+-相同。
注意:(1)強(qiáng)制轉(zhuǎn)換是一種單目運(yùn)算;
(2)被強(qiáng)制轉(zhuǎn)換變量本身并未轉(zhuǎn)換。
P56,例,例3.8。
4. 自增、自減運(yùn)算符
(1)運(yùn)算符:+ +、--
(2)優(yōu)先級(jí):與單目+、-相同。
(3)結(jié)合方向:從右到左
P57,例。
注意:(1)自增與自減運(yùn)算符只能用于變量;
(2)前+ +、--:先增值后引用;
后+ +、--:先引用后增值。
5. 有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明
表達(dá)式是把常量、變量、函數(shù)用各種運(yùn)算符連接起來(lái)的合法的式子。C中的表達(dá)式簡(jiǎn)練、高效,但有時(shí)會(huì)出現(xiàn)岐義性,使得程序理解有一定的困難,不同版本的C對(duì)表達(dá)式的解釋也有所不同。
P58,(1)~(3)
3.9 賦值運(yùn)算符和賦值表達(dá)式
1. 賦值運(yùn)算符
(1)運(yùn)算符:=
(2)優(yōu)先級(jí):僅高于逗號(hào)“,”運(yùn)算,低于其它運(yùn)算。
(3)結(jié)合方向:從右到左
P59,例。
2. 類型轉(zhuǎn)換
當(dāng)賦值運(yùn)算兩邊的類型不一致,且都是數(shù)值類型或字符型時(shí),會(huì)自動(dòng)發(fā)生類型轉(zhuǎn)換,轉(zhuǎn)換以左邊變量的類型為準(zhǔn)。
轉(zhuǎn)換規(guī)則:
(1)實(shí)型賦給整型:舍去小數(shù)。
(2)整型賦給實(shí)型:值不變。
(3)雙精度賦給單精度:取其前7位有效數(shù)字,反之值不變。P59,例。
(4)字符型賦給整型:低8位照搬,高8位視符號(hào)位補(bǔ)0或1。P60,例。
(5)整型賦給字符型:低8位照搬,高8位丟失。P60,例。
(6)整型賦給長(zhǎng)整型:值不變,反之低16位照搬。P60,例。
(7)無(wú)符號(hào)型賦給有符號(hào)型:長(zhǎng)度相同時(shí)最高位變?yōu)榉?hào)位,長(zhǎng)度不同時(shí)高位補(bǔ)0或截去高位。P61,例。
(8)有符號(hào)型賦給無(wú)符號(hào)型:長(zhǎng)度相同時(shí)最高位失去符號(hào)位,長(zhǎng)度不同時(shí)高位補(bǔ)0或截去高位。P61,例。
P61,例3.9。
3. 復(fù)合的賦值運(yùn)算
(1)運(yùn)算符:+=、-=、*=、/=、%= 等
(2)優(yōu)先級(jí):與賦值運(yùn)算“=”相同;
(3)結(jié)合方向:從右到左。
P62,例。
4. 賦值表達(dá)式
由賦值語(yǔ)句購(gòu)成的表達(dá)式稱為賦值表達(dá)式,這種表達(dá)式還可以嵌套,從右到左逐一進(jìn)行賦值運(yùn)算,表達(dá)式的值是最后一次賦值的值。
P63,例。
注意:(1)結(jié)合方向是從右到左的;
(2)復(fù)合的賦值運(yùn)算也可購(gòu)成賦值表達(dá)式;
(3)賦值表達(dá)式可出現(xiàn)在輸出的語(yǔ)句中。
3.10 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式
1. 逗號(hào)運(yùn)算符
(1)運(yùn)算符: ,
(2)優(yōu)先級(jí):最低;
(3)結(jié)合方向:從左到右。
P63,例。
2. 逗號(hào)表達(dá)式
格式:表達(dá)式1,表達(dá)式2,… ,表達(dá)式n
求解過(guò)程:從左到右逐一求表達(dá)式的值,整個(gè)表達(dá)式的值為最后一個(gè)表達(dá)式的值。
P64,例。