Turbo C語言概述課件_第1頁
Turbo C語言概述課件_第2頁
Turbo C語言概述課件_第3頁
Turbo C語言概述課件_第4頁
Turbo C語言概述課件_第5頁
已閱讀5頁,還剩603頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

TurboC語言概述§1.1C語言的產(chǎn)生與發(fā)展C語言是1972年由美國的DennisRitchie設(shè)計(jì)發(fā)明的,并首次在UNIX操作系統(tǒng)的DECPDP-11計(jì)算機(jī)上使用。發(fā)展演變過程:1960年ALGOL60(面向?qū)ο蟮母呒壵Z言,離硬件較遠(yuǎn),不易編寫系統(tǒng)程序)→1963年CPL(較ALGOL接近硬件,規(guī)模較大,難以實(shí)現(xiàn))→1967年BCPL(對CPL簡化形成)

→1970年B(對CPL簡化形成,簡單且接近硬件)

→1972年C.

隨著微機(jī)的日益普及,出現(xiàn)了許多C語言版本。美國國家標(biāo)準(zhǔn)研究所(ANSI)為C語言制定了一套ANSI標(biāo)準(zhǔn),成為現(xiàn)行的C語言標(biāo)準(zhǔn)。§1.2C語言的特點(diǎn)

C語言發(fā)展如此迅速,而且成為最受歡迎的語言之一,主要因?yàn)樗哂袕?qiáng)大的功能。歸納起來C語言具有下列特點(diǎn):

C是中級語言C是結(jié)構(gòu)化語言

C語言功能強(qiáng)大

C語言可移植性好C語言使用靈活

C是中級語言

它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C語言可以象匯編語言一樣對硬件端口和物理地址的位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。返回

C是結(jié)構(gòu)化語言

結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。返回

C語言功能強(qiáng)大

C語言支持多達(dá)34種運(yùn)算符和多種數(shù)據(jù)類型,并引入了指針概念,可使程序的編制效率更高。另外C語言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的。返回

C語言可移植性好

C語言還有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型?;旧喜蛔魅魏涡薷木涂梢栽诟鞣N型號的計(jì)算機(jī)和操作系統(tǒng)上使用。返回

C語言使用靈活

C語言書寫簡潔、緊湊,使用靈活方便,語法的限制較其它語言寬松,程序設(shè)計(jì)時(shí)的自由度大。生成的目標(biāo)代碼質(zhì)量高執(zhí)行效率高。返回§1.3簡單的C程序概述

本節(jié)首先介紹C程序的基本組成部分;

然后分析TurboC的有關(guān)特征。通過本節(jié)的學(xué)習(xí),可以對C語言程序有一個(gè)初步認(rèn)識。1.3.1.TurboC程序的一般組成部分

TurboC2.0象其它語言一樣按其規(guī)定的格式和提供的語句由用戶編寫應(yīng)用程序。請看下面一段TurboC源程序。

【例1】

/*Exampleprogram1ofTurboC*/main()/*主函數(shù)定義*/

{/*函數(shù)體{}*/

printf(“Thisisacprogram.\n”);}

【例2】

/*Example2:thesumofNo.aaddNo.b*/main()/*主函數(shù)定義*/

{

inta,b,sum;/*定義變量*/a=123;b=456;sum=a+b;

printf(“thesumis%d”,sum);}

【例3】

/*Example3:函數(shù)調(diào)用*/main()/*主函數(shù)定義*/{inta,b,c;/*聲明部分,定義變量*/

scanf(“%d,%d”,&a,&b);c=max(a,b);/*函數(shù)調(diào)用*/

printf(“max=%d”,c);}

intmax(intx,inty)/*定義max函數(shù),值、形參x,y均為int型*/{intz;/*聲明部分,定義本函數(shù)中變量z*/if(x>y)z=x;elsez=y;return(z);/*返回調(diào)用函數(shù)據(jù)*/}TurboC源程序基本結(jié)構(gòu)組成:C源程序組成:C源程序由函數(shù)組成一個(gè)C程序可由若干個(gè)函數(shù)組成:有且只有一個(gè)主函數(shù)main函數(shù)和多個(gè)子函數(shù),每個(gè)函數(shù)完成一定功能。函數(shù)是C程序的基本單位。被調(diào)用函數(shù)可以是系統(tǒng)提供的庫函數(shù)(如:scanf,printf),也可是用戶編制的函數(shù)。C是函數(shù)式的語言,編寫C程序就是編寫一個(gè)個(gè)函數(shù)。容易實(shí)現(xiàn)程序的模塊化;函數(shù)組成:函數(shù)的首部和函數(shù)體

①函數(shù)首部:函數(shù)類型函數(shù)名函數(shù)屬性函數(shù)參數(shù)(形參)名參數(shù)類型如:max函數(shù)首部:intmax(intx,inty)

說明:函數(shù)名后必須跟一對(),形參可無。

②函數(shù)體:最外層一對{…}內(nèi)的部分。函數(shù)體包括:

聲明部分:定義所用到的變量執(zhí)行部分:由若干語句組成說明:函數(shù)可無聲明部分,或即無聲明部分又無執(zhí)行部分

如:dump(){}/*dump為空函數(shù),又稱啞函數(shù)*/C程序執(zhí)行:總是從main函數(shù)執(zhí)行,不論main函數(shù)在程序中位置如何;C程序書寫格式:一般用小寫字母書寫;語句數(shù)據(jù)定義結(jié)尾必須要用“;”作為終止符;

C語言無輸入輸出語句,輸入輸出操作由輸入輸出庫函數(shù)scanf.printg等實(shí)現(xiàn);注釋部分包含在“/*……*/”之間,在編譯時(shí)它被TurboC編譯器忽略。說明:1.TurboC的變量在使用之前必須先定義其數(shù)據(jù)類型,未經(jīng)定義的變量不能使用。2.在TurboC中,大、小寫字母是有區(qū)別的3.TurboC程序的書寫格式非常靈活,沒有嚴(yán)格限制。例如:

main(){charc;clrscr();gotoxy(12,3);puts("WelcometouseTurboC2.0!");gotoxy(15,13);

printf("<CR>--Continue");gotoxy(15,15);...}

這樣寫語法上沒有錯(cuò)誤,但閱讀起來不方便,同時(shí)也使得程序?qū)哟尾幻鞔_。建議在使用TurboC編程時(shí),一行只寫一條語句,遇到嵌套語句向后縮進(jìn),必要時(shí)對程序加上注釋行。這樣可以使程序結(jié)構(gòu)清楚、易于閱讀、維護(hù)和修改。通過以上介紹,得出TurboC源程序的一般形式為:

main(){

局部變量定義

<程序體>}

sub1(){局部變量定義

<程序體>}……

subN(){

局部變量定義

<程序體>}其中sub1(),...,subN()代表用戶定義的子函數(shù),程序體指TurboC2.0提供的任何庫函數(shù)調(diào)用語句、控制流程語句或其它用子函數(shù)調(diào)用語句等。第二章算法程序應(yīng)包括兩方面內(nèi)容:

⑴對數(shù)據(jù)的描述:指定數(shù)據(jù)的類型和數(shù)據(jù) 組織形式,即數(shù)據(jù)結(jié)構(gòu)

⑵對操作的描述:操作步驟,即算法

沃爾思提出:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境

算法:是靈魂數(shù)據(jù)結(jié)構(gòu):加工對象語言:工具算法:解決“做什么”“怎么做”程序中的操作語句是算法的實(shí)現(xiàn)§2.1算法的概念算法:為解決一個(gè)問題而采取的方法和步驟.計(jì)算機(jī)算法分類:

數(shù)值運(yùn)算法:目的是求數(shù)值解非數(shù)值運(yùn)算法:常用于事務(wù)管理領(lǐng)域§2.2簡單算法舉例例2.1求1*2*3*4*5⑴原始算法:s1:1*2;s2:2*3s3:6*4;s4:24*5結(jié)束⑵循環(huán)算法:設(shè)變量p代表被乘數(shù),i代表乘數(shù),將每一步驟的乘積放在p中.

s1:p=1;s2:i=2;

s3:p*i→p;s4:i+1→i;s5:若i≤5,返回s3→s5

若I>5,則P=5!結(jié)束

循環(huán)條件:i≤5例2.2有50個(gè)學(xué)生,要將他們之中成績在80分以上者打印出來.變量:n:學(xué)生學(xué)號ni:第i個(gè)學(xué)生學(xué)號

g:學(xué)生成績gi:第i個(gè)學(xué)生成績算法:s1:1→i;/*i控制序號*/s2:gi≥80,打印:

ni,gi;否則:不打印

s3:i+1→i;s4:i≤50,返回s2

i≥50,

結(jié)束.例2.3判斷2000-2500年中的每一年是否為閏年

閏年條件:①能被4整除,但不能被100整除如:1996

或②能被100整除,又能被400整除如:2000

算法:設(shè)Y為年份

s1:2000→y;s2:判斷:若y不能被4整除,則輸出y“不是閏年”,

轉(zhuǎn)至s6,取下一年判斷;

s3:判斷:若y能被4整除,不能被100整除則輸出y“是閏年”,轉(zhuǎn)至s6;s4:判斷:若y能被100整除,又能被400整除

則輸出y“是閏年”,否則輸出y“不是閏年”.轉(zhuǎn)至s6;s5:其他情況:輸出y“不是閏年”;

s6:y+1→ys7:當(dāng)y≤2500時(shí),轉(zhuǎn)s2繼續(xù),

當(dāng)y>2500時(shí),結(jié)束.例2.4求1-1/2+1/3-1/4+…+1/99-1/100分析:本題為求累加和.每項(xiàng)變化規(guī)律:符號正負(fù)相間,分母從1—100變量設(shè)置:sign:數(shù)值符號,sum:累加和,deno:分母,term:某一項(xiàng).S1:sign=1/*預(yù)設(shè)符號1*/

s2:sum=1/*第一項(xiàng)放入sum中*/

s3:deno=2 /*分母值預(yù)置為2*/

s4:sign=(-1)*sign /*第i+1項(xiàng)sign值*/

s5:term=sign*(1/deno) /*求級數(shù)中某項(xiàng)值*/

s6:sum=sum+term /*將本項(xiàng)加入累加器*/

s7:deno=deno+1 /*分母按規(guī)律遞減*/

s8:判斷:deno

≤100返回s4

deno>100結(jié)束.例2.5對一個(gè)大于或等于3的正數(shù),判斷它是否為素?cái)?shù)S1:輸入n值

s2:i=2 /*i為除數(shù)*/s3:n/i得余數(shù)rs4:判斷:r=0,n能被i數(shù)整除,結(jié)論:n不是素?cái)?shù),結(jié)束.

r≠0,n不能被i數(shù)整除,繼續(xù)

s5:i+1→is6:當(dāng)i≤

n-1(或i≤

n/2,

i≤

sqrt(n))時(shí),轉(zhuǎn)s3繼續(xù),

當(dāng)i=n時(shí):所有除數(shù)比較完畢:結(jié)論:n是素?cái)?shù),結(jié)束.素?cái)?shù):除1和該數(shù)本身外,不能被其他任何數(shù)整除的數(shù).n(≥3)是否素?cái)?shù):將n作被除數(shù),用2~(n-1)[或2~n/2,2~sqrt(n)]輪流除n,若都不能整除,則n是素?cái)?shù).§2.2算法的特點(diǎn)

有窮性:一個(gè)算法應(yīng)包含有限的操作步驟確定性:算法中的每一個(gè)步驟應(yīng)當(dāng)是確定的,應(yīng)當(dāng)不被解釋成不同的含義,而應(yīng)是十分明確無誤的.有零個(gè)或多個(gè)輸入輸入指執(zhí)行算法時(shí)需從外界取得的信息.有零個(gè)或多個(gè)輸出:“解”既輸出.有效性:指算法中每一步驟應(yīng)當(dāng)有效執(zhí)行,并得到確定的值.§2.4怎樣表示一個(gè)算法

常用方法:自然語言傳統(tǒng)流程圖 結(jié)構(gòu)化流程圖偽代碼PAD圖等§2.4.1用自然語言表示算法§2.4.2用流程圖表示算法

常用流程圖符號起止框

輸入輸出框 判斷框 處理框

或 流程線 連接線 注釋框用流程圖表示算法舉例例2.6求5!i+1→i結(jié)束2→

it*i→t開始1→

ti>5打印tNY例2.7將50名學(xué)生中成績在80分以上者的學(xué)號和成績打印輸出.流程圖:i+1→i輸入ni,gi1→

i開始i>50ANYi+1→igi≥80

A1→

i打印ni,gii>50結(jié)束NYNY輸入學(xué)生數(shù)據(jù)判斷并輸出結(jié)果例2.8判斷閏年算法流程圖:y不能被400整除打印y“不是閏年”y不能被4整除NY開始y不能被100整除打印y“是閏年”打印y“不是閏年”打印y“是閏年”y+1→yy>2500開始2000→

tYNNYNY例2.9求1-1/2+1/3-1/4+…+1/99-1/100算法流程圖流程圖:開始1→

sum2→

deno1→

signAA(-1)*sign→signsign*(1/deno)→termsum+term→sumdeno+1→

denodeno>100結(jié)束NY例2.10判斷素?cái)?shù)的算法流程圖流程圖:開始輸入n2→

ir=0?n/i的余數(shù)→ri+1→ii>sqrt(n)?打印n“是素?cái)?shù)”打印n“不是素?cái)?shù)”結(jié)束YNNY§2.4.3三種基本結(jié)構(gòu)⑴順序結(jié)構(gòu):⑵選擇結(jié)構(gòu)(分支結(jié)構(gòu))ABab成立不成立PABabPA成立不成立ab⑶

循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)P1Aab成立P1ab成立A不成立循環(huán)結(jié)構(gòu)舉例:打印5個(gè)數(shù):1,2,3,4,5當(dāng)型循環(huán)實(shí)現(xiàn)直到型循環(huán)實(shí)現(xiàn)0→x

X<5X+1→x

打印xNY0→x

X+1→x

打印xX≥5YN三種基本結(jié)構(gòu)的共同特點(diǎn):只有一個(gè)入口只有一個(gè)出口結(jié)構(gòu)內(nèi)的每一個(gè)部分都有機(jī)會(huì)被執(zhí)行到。對每一個(gè)框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它。結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。P1A無路徑通過A框AB死循環(huán)§2.4.3用N-S流程圖表示算法N-S流程圖符號:⑴順序結(jié)構(gòu)⑵選擇結(jié)構(gòu)AB成立P不成立AB⑶當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)當(dāng)P1成立A

直到P1成立說明:A、B框可以是一個(gè)簡單操作,也可以是三個(gè)基本結(jié)構(gòu)之一。N-S流程圖算法舉例求5!打印50名學(xué)生中成績高于80分的學(xué)號、成績1→t2→it*I→ti+1→i直到i>5打印t直到型循環(huán)1→

i輸入ni,gii+1→i直到>501→

i是gi≥80

否輸出ni,gii+1→I直到I>50選擇結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)N-S流程圖算法舉例判斷閏年2000→

y是

y/4的余數(shù)為0

否是

y/100的余數(shù)不為0

y/400的余數(shù)為0

否“非閏年”“是閏年”“是閏年”“非閏年”

y+1→y

直到y(tǒng)>2500直到型循環(huán)選擇選擇§2.4.5結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序:用高級語言表示的結(jié)構(gòu)化算法,這種程序便于編寫 、閱讀、維護(hù)和修改。結(jié)構(gòu)化程序方法:自頂向下、逐步細(xì)化、模塊化設(shè)計(jì)、結(jié)構(gòu)化編程。

自頂向下、逐步細(xì)化:先進(jìn)行總體規(guī)劃、再進(jìn)行各部的設(shè)計(jì),是將問題的求解由抽象逐步具體化的過程。模塊化設(shè)計(jì)方法:根據(jù)程序模塊的功能將它劃分為若干子模塊,子模塊可以劃分為更小的模塊,這個(gè)過程采用自頂向下的方法實(shí)現(xiàn)。第三章

數(shù)據(jù)類型、變量和運(yùn)算符

§1C的數(shù)據(jù)類型

在TurboC語言中,每個(gè)變量在使用之前必須定義其數(shù)據(jù)類型。TurboC的數(shù)據(jù)類型:

基本類型:整型(int)、字符型(char)、枚舉類型、實(shí)型(浮點(diǎn)型float、double)構(gòu)造類型:數(shù)組、結(jié)構(gòu)(struct)和聯(lián)合(共用體union)指針類型(*)空類型(void)§2常量、變量和標(biāo)識符

1.標(biāo)識符

標(biāo)識符:是用于標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名和文件名的有效字符序列。標(biāo)識符組成:由字母、數(shù)字或下劃線組成,且第一個(gè)字符只能是字母或下劃線。標(biāo)識符之間的大小寫是被區(qū)分的。長度視機(jī)型而定,一般為8位。標(biāo)識符可以分成三類:

保留的關(guān)鍵字

由C語言本身使用,共有32個(gè),代表固定意義,由小寫字母組成,且不能用作用戶標(biāo)識符如變量名、函數(shù)名等由ANSI標(biāo)準(zhǔn)定義的共32個(gè)

autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoif

whilestatic

預(yù)定義標(biāo)識符

有特殊含義,如庫函數(shù)的名字和預(yù)處理命令等。系統(tǒng)允許用戶使用,但一般不推薦

用戶標(biāo)識符

用于命名常量、變量、函數(shù)和文件等。其命名原則如下:

1.所有標(biāo)識符必須由一個(gè)字母(a~z,A~Z)或下劃線(_)開頭;2.標(biāo)識符的其它部分可以用字母、下劃線或數(shù)字(0~9)組成;3.大小寫字母表示不同意義,即代表不同的標(biāo)識符;4.標(biāo)識符只有前32個(gè)字符有效;5.標(biāo)識符不能使用TurboC2.0的關(guān)鍵字。

下面舉出幾個(gè)正確和不正確的標(biāo)識符:正確

smart_decisionkey_boardFLOAT不正確5smartbomb?Key.boardfloat

2.常量和符號常量

常量:在程序運(yùn)行過程中,其值不能改變的量。

字面常量或直接常量:從字面形式即可判斷的常量。符號常量:用一個(gè)標(biāo)識符代表一個(gè)常量,符號常量的值在其作 用域內(nèi)不能改變或再賦值。常量和符號常量也有各自的數(shù)據(jù)類型。使用符號常量的長處:⑴含義清楚:定義符號常量時(shí)應(yīng)考慮見名知意⑵便于修改

例:整形常量:12,0,-3

實(shí)型常量:4.6,-1.23

字符常量:`a`,`b`例3.1:符號常量的使用

#definePRICE30 main() {intnum,total; num=10; total=num*PRICE; printf(“total=*d”,total); }3.變量

變量:在序運(yùn)行過程中,其值能夠改變的量稱為變量。一個(gè)變量必須有一個(gè)變量名,在內(nèi)存中占據(jù)一定大小的內(nèi)存單元。

3變量名變量值存儲單元a

使用要求:

⑴“先定義,后使用”

⑵每一變量指定為確定類型:便于編譯時(shí)為其分配相應(yīng)的存儲單元以及檢查該變量所行的運(yùn)算是否法§3整型數(shù)據(jù)(int)

1.整型常量

整型常量就是整型常數(shù)或稱為直接常量。

C的整型常數(shù)有三類:

Ⅰ.十進(jìn)制常數(shù):以非0開始的數(shù),如123,-342

Ⅱ.八進(jìn)制常數(shù):以0開頭的整型常數(shù)是八進(jìn)制數(shù)。 如0123,即(123)8=1x82+2x80=(83)10-011 即(-11)8

Ⅲ.十六進(jìn)制常數(shù):以0x開頭的整型常數(shù)是十六進(jìn)制數(shù)。 如0x123,既是(123)16=1x162+2x161+3x160=(291)10

另外,可在整型常數(shù)后添加一個(gè)"L"或"l"字母表示該數(shù)為長整型數(shù),如22L,0773L,0Xae4l。2.整型變量

1.整型數(shù)據(jù)在內(nèi)存中的存放形式

數(shù)據(jù)在內(nèi)存中以二進(jìn)制補(bǔ)碼的形式存放。數(shù)據(jù)所占的內(nèi)存大小與其類型有關(guān),每一基本類型整型變量在內(nèi)存中占2個(gè)字節(jié)。如:inti;i=10;數(shù)據(jù)存放示意圖i10數(shù)據(jù)在內(nèi)存中存放情況0000000000001010i正數(shù)補(bǔ)碼:同原碼 負(fù)數(shù)補(bǔ)碼:該數(shù)絕對值的二進(jìn)制形式按位取反再加1例:求-10的補(bǔ)碼:10的原碼:0000000000001010按位取反:-10的補(bǔ)碼:1111111111110101

1111111111110110

2.整型變量的分類

整型數(shù)類型:[signed]int,

[unsigned]

int

,

[signed]short[

int],[unsigned]short[

int

],

[signed]long[

int

],[unsigned]long[

int

]

整型變量類型:基本整型int

短整型short

長整型long

修飾符:short

long

signedunsigned(隱含為signed) signed變量存儲單元中最高位為符號位 unsigned變量存儲單元中全部位存放數(shù)本身例:inta;最大值0111111111111111=32767符號位最小值1000000000000000=-32768inta;最大值0111111111111111=65535數(shù)值位最小值0000000000000000=0ANSI標(biāo)準(zhǔn)定義的整數(shù)類型類型字節(jié)比特?cái)?shù)最小取值范圍[signed]int216-215~(215-1)[unsigned]int2160~(216-1)[signed]short[

int]216-215~(215-1)[unsigned]short[

int

]2160~(216-1)[signed]long[

int

]432-231~(231-1)[unsigned]long[

int

]4320~(232-1)

某一個(gè)類型的數(shù)據(jù)一旦超出了其表示范圍,就會(huì)發(fā)生數(shù)據(jù)溢出,這種錯(cuò)誤系統(tǒng)的語法檢查不能夠發(fā)現(xiàn)3.整型變量定義

C可以用下列語句定義整型變量

inta,b;

/*a、b被定義為有符號短整型變量*/

unsignedlongc;

/*c被定義為無符號長整型變量*/

例3.2main(){inta,b,c,d;/*a,b,c,d為整型變量*/ unsignedu; /*u為無符號整型變量*/

a=12;b=-24;u=10;

c=a+u;d=b+u;

printf(“a+u=%d,b+u=%d\n”,c,d); }4.整型常量的類型

(1)一個(gè)整數(shù)如果值在int或unsinged

int范圍內(nèi),就可以認(rèn)為是int或unsinged

int型,并且可以賦值給int、long或unsinged

int、unsingedlong型變量。

(2)一個(gè)整數(shù)如果值在long或unsingedlong范圍內(nèi),就可以認(rèn)為是long或unsingedlong型,并且可以賦值給long或unsingedlong型變量。

(3)常量沒有unsinged無符號類型,但一個(gè)正整數(shù)可以賦值給unsinged類型變量?!?實(shí)型(浮點(diǎn)型float)

1.實(shí)型常量的表示方法

指帶有小數(shù)部分的數(shù),又稱實(shí)數(shù),C語言中的浮點(diǎn)數(shù)是以十進(jìn)制數(shù)表示的,采用兩種形式(1)十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。

如:(2)指數(shù)形式。由一個(gè)正整數(shù)的指數(shù)和一個(gè)1~10之間小數(shù)的尾數(shù)組成。

整數(shù).小數(shù)e指數(shù)3.141593.2159E62.實(shí)型變量

實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式

實(shí)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),共32位. 按指數(shù)形式存放:分成小數(shù)部分和指數(shù)部分分別存放。指數(shù)部分采用規(guī)格化的指數(shù)形式.

如:3.14159:+.314591數(shù)符+小數(shù).31459指數(shù)101X3.1459其小數(shù)部分位數(shù)越多則數(shù)據(jù)的精度越高但表示的范圍越小。其位數(shù)一般由編譯系統(tǒng)指定,一般的小數(shù)部分位數(shù)為24位,指數(shù)部分位數(shù)為8位,均包括符號位。

實(shí)型變量的分類

TurboC中有以下三種類型的浮點(diǎn)數(shù):float字長為4個(gè)字節(jié)共32位二進(jìn)制數(shù),數(shù)的范圍是10-37E~10+38E。有效數(shù)字6~7位。double字長為8個(gè)字節(jié)共64位二進(jìn)制數(shù),數(shù)的范圍是10-307E~10+308E。有效數(shù)字15~16位。doublefloat

字長為16個(gè)字節(jié)共128位二進(jìn)制數(shù),數(shù)的范圍是10-4931E~10+4932E。有效數(shù)字18~19位。

舍入誤差

由于實(shí)型變量用一個(gè)有限長度的內(nèi)存單元來存儲,其有效數(shù)字的位數(shù)是有限的,因而會(huì)產(chǎn)生誤差。編程時(shí)應(yīng)該避免與一個(gè)相比較非常小的數(shù)進(jìn)行算術(shù)運(yùn)算,或采取人為的控制措施。

【例】main() { floata,b; a=123456.789e5; b=a+20;

printf(“%f%f”,a,b); }

運(yùn)行結(jié)果:a,b均為12345678848.000000a,b為float,有效位為6-7位a理論值:12345678900有效位:1234567b理論值12345678920

有效位:12345677位以后的數(shù)字無意義的.3.浮點(diǎn)型變量的定義

可以用下列語句定義浮點(diǎn)型變量:

floata,f;

/*a,f被定義為單浮點(diǎn)型變量*/doubleb;

/*b被定義為雙浮點(diǎn)型變量*/說明:1.浮點(diǎn)常數(shù)只有一種進(jìn)制(十進(jìn)制)。

2.所有浮點(diǎn)常數(shù)都被默認(rèn)為double。

3.浮點(diǎn)數(shù)均為有符號浮點(diǎn)數(shù),沒有無符號浮點(diǎn)數(shù)。

4.絕對值小于1的浮點(diǎn)數(shù),其小數(shù)點(diǎn)前面的零可以省略。如:0.22可寫為.22, -0.0015E-3可寫為-.0015E-3。

5.TurboC默認(rèn)格式輸出浮點(diǎn)數(shù)時(shí),最多只保留小數(shù)點(diǎn)后六位。§5字符型(char)1.字符常量字符常量代表ASCII碼字符集里的一個(gè)字符字符的表示方法:圖形符號和轉(zhuǎn)義字符⑴

'字符的圖形符號':如'a','9','Z','+','A'

圖形符號指可打印字符,但‘,\,不能用此方法.⑵

‘轉(zhuǎn)義字符’:可表示任何可輸出字符

①轉(zhuǎn)義序列形式:“\圖形符號”:\n,\t,\b,\r,\f“\ddd”:ddd表示1~3位八進(jìn)制數(shù)字代表的字.“\xhh”:hh表示1~3位八進(jìn)制數(shù)字代表的字符,x為前綴,不能省.

如字符A(65)可表示為:‘A’,’\101’,’\x41’②單引號’.反斜線\字符必須用轉(zhuǎn)義序列表示.

單引號:’\’’,‘\047’或‘\47’,‘\47’

反斜線:’\\’,’\134’,’\x5c’③空字符:’\0’,’\000’ ASCII碼為空的字符,不是空白字符,它強(qiáng)調(diào)字符的類型為字符.表:轉(zhuǎn)義字符及其作用字符形式含義ASCII碼\n換行10\t水平制表(到下一tab位置)9\b退格(移到前一列)8\r回車(移到本行開頭)13\f換頁12\\字符\92\’字符’39\”字符”34\ddd1到3位8進(jìn)制數(shù)代表的字符\xhh1到2位16進(jìn)制數(shù)代表的字符【例】main(){

inta,b,c;a=5;b=6;c=7;

printf("%d\n\t%d%d\n%d%d\t\b%d\n",a,b,c,a,b,c);}/*此程序練習(xí)轉(zhuǎn)義字符的使用*/運(yùn)行結(jié)果:5 675672.字符變量的存儲及使用

字符變量在內(nèi)存中以其存儲字符的ASCII碼的二進(jìn)制值,存儲成一個(gè)字節(jié)的整型數(shù)。有符號字符型變量取值范圍為-128~127,無符號字符型變量取值范圍是0~255。如:a1=‘a(chǎn)’,a2=‘b’在內(nèi)存中存儲形式:(97)(98)97980110000101100010a1a2字符型與整型數(shù)據(jù)的通用字符型數(shù)據(jù)也將按整型數(shù)處理,如果某個(gè)變量定義成char,則表明該變量是有符號的,即它將轉(zhuǎn)換成有符號的整型數(shù)。在程序中一個(gè)字符型變量是可以等同為一個(gè)整型變量進(jìn)行運(yùn)算的,我們可以為字符型變量賦整型值,或?qū)⒅c整型變量一起運(yùn)算。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。 在輸出時(shí),允許把字符變量按整型量輸出,輸出格式為%d,也允許把整型量按字符量,輸出輸出格式為%c。 整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時(shí),只有低八位字節(jié)參與處理。【例】main(){chara,b;a=120;b=121;

printf("%c,%c\n%d,%d\n",a,b,a,b);}顯示程序結(jié)果:a,b120,121;

本程序中說明a,b為字符型,但在賦值語句中賦以整型值。從結(jié)果看,a,b值的輸出形式取決于printf函數(shù)格式串中的格式符,當(dāng)格式符為"c"時(shí),對應(yīng)輸出的變量值為字符,當(dāng)格式符為"d"時(shí),對應(yīng)輸出的變量值為整數(shù)?!纠縨ain(){chara,b;a=‘x';b='y';a=a-32;b=b-32;

printf("%c,%c\n%d,%d\n",a,b,a,b);}運(yùn)行結(jié)果:X Y 88 89

C語言允許字符變量參與數(shù)值運(yùn)算,即用字符的ASCII碼參與運(yùn)算。由于大小寫字母的ASCII碼相差32,因此運(yùn)算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出。4.字符串常量

字符串常量是以一對雙引號括起來的字符序列。 如:“howdoyoudo”,“¥12345”和“a”等。 但沒有對應(yīng)的字符串變量。 特別注意:“a”和‘a(chǎn)’不是同一個(gè)常量,前者是字符串常量,而后者是字符常量。兩者不同的原因在于每個(gè)字符串常量的結(jié)尾,C語言系統(tǒng)會(huì)自動(dòng)的加上一個(gè)特殊字符‘\0’作為字符串的結(jié)束標(biāo)志。因此,字符串“a”中包含有兩個(gè)字符分別是‘a(chǎn)’和‘\0’。

特別注意:不要將字符串常量賦值給字符變量,或?qū)ψ址A亢妥址A孔麝P(guān)系運(yùn)算。字符串的存儲:字符串的存儲在內(nèi)存中存儲時(shí),系統(tǒng)在串尾添加一個(gè)’\0’空字符,作為字符串結(jié)束標(biāo)志,即字符串的存儲長度比實(shí)際長度多1.

例如:字符串“china”,內(nèi)存存儲

C

h

ina\0

計(jì)算機(jī)在編譯時(shí),將留出連續(xù)6個(gè)字符的空間,前5個(gè)存儲5個(gè)字母。第6個(gè)用來存放字符串終止符“\0”,并且終止符無需人為處理。§6變量賦初值

對于程序中要求預(yù)先設(shè)置初值的變量,C語言允許在變量定義的時(shí)候同時(shí)使變量初始化。

如:

inta=3;inta,b,c=5;floatf=1.234;charI,j,k=’0234’;

對同一個(gè)類型的多個(gè)變量賦同一個(gè)值時(shí),可寫成:

inta=b=c=1;但不同類型的變量一般不能夠用這種方法:如:

inta;floatb=a=1;變量賦初值1聲明的作用為變量分配內(nèi)存單元,變量名作為內(nèi)存單元的符號地址,這件事是在程序編譯鏈接時(shí)完成的。2變量其值可以改變的量通過b可以找到相應(yīng)的存儲單元地址XXXXb變量名

————變量值存儲單元地址XXXX30.0變量賦初值3對變量的賦值賦值符號“=”<變量>=<表達(dá)式>b=30.0; //讀作將表達(dá)式的值30.0賦給變量ba=sin(b*3.14159/180); //讀作將表達(dá)式(正弦函數(shù))

//的值賦給變量a4變量賦值特點(diǎn)(1)先定義,后使用

intd,e,f; 定義三個(gè)變量為整數(shù)類型 如未定義,則在編譯時(shí)被查出,認(rèn)為非法(2)變量未被賦值前,值為0(3)對變量賦值過程是“覆蓋”過程,用新值去替換舊值(4)讀出變量的值,該變量保持不變(5)參與表達(dá)式運(yùn)算的所有變量都保持原來的值不變變量賦值過程

def

未賦值前000執(zhí)行e=d770執(zhí)行f=d+e7714執(zhí)行d=77007執(zhí)行d=d+187141§7不同類型變量間的混合運(yùn)算

整型、實(shí)型和字符型數(shù)據(jù)之間可以進(jìn)行混合運(yùn)算,運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,運(yùn)算結(jié)果的類型按照類型轉(zhuǎn)換的原則進(jìn)行。變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。自動(dòng)轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換轉(zhuǎn)換的方法:1.自動(dòng)類型轉(zhuǎn)換

自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:

若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。

轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)成long型后再進(jìn)行運(yùn)算。

所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。

在賦值運(yùn)算中,賦值號兩邊量的數(shù)據(jù)類型不同時(shí),賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長度比左邊量長時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。數(shù)據(jù)類型轉(zhuǎn)換規(guī)則圖:說明:①橫向向左的箭頭表示必定的轉(zhuǎn)換②縱向箭頭表示不同類型轉(zhuǎn)換方向③類型轉(zhuǎn)換由系統(tǒng)自動(dòng)進(jìn)行l(wèi)ongunsignintdoubl高低floatcharshort(級別)類型轉(zhuǎn)換及運(yùn)算次序舉例:

已知:inti;floatf;doubled;longe;則:10+‘a(chǎn)’+i*f-d/e①10+‘a(chǎn)’+i*f-d/e/*’a’

int,ASCII為97*/②107+i*f-d/e

/*f

→double,必定轉(zhuǎn)換*/

/*i

→double,

i*f

為double*/③107+(i*f)-d/e

/*107

→double

*/

④[107+(i*f)]-d/e

/*e

→double*/

d/e

→double

*/⑤

[107+(i*f)]-d/e

/*[107+(i*f)]

→double,

結(jié)果:double

*/【例】main(){floatPI=3.14159;

ints,r=5;s=r*r*PI;

printf("s=%d\n",s);}本例程序中,PI為實(shí)型;s,r為整型。在執(zhí)行s=r*r*PI語句時(shí),r和PI都轉(zhuǎn)換成double型計(jì)算,結(jié)果也為double型。但由于s為整型,故賦值結(jié)果仍為整型,舍去了小數(shù)部分。2.強(qiáng)制類型轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為:(類型說明符)(表達(dá)式)

其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如:(float)a

把a(bǔ)轉(zhuǎn)換為實(shí)型(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型

在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:類型說明符和表達(dá)式都必須加括號(單個(gè)變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對該變量定義的類型。【例】main(){floatf=5.75;

printf("(int)f=%d,f=%f\n",(int)f,f);}本例表明,f雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作用,是臨時(shí)的,而f本身的類型并不改變。因此,(int)f的值為5(刪去了小數(shù))而f的值仍為5.75。運(yùn)行結(jié)果:(int)f=5f=5.75§8算術(shù)運(yùn)算符與算術(shù)表達(dá)式

TurboC的運(yùn)算符非常豐富,主要分為三大類:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符與邏輯運(yùn)算符,按位運(yùn)算符。除此之外,還有一些用于完成特殊任務(wù)的運(yùn)算符。下面分別進(jìn)行介紹。TurboC的算術(shù)運(yùn)算符如下:

操作符

作用

+加,一目取正-減,一目取負(fù)*乘/除%取模(取余)--減1++加11.一目和二目操作

一目操作是指對一個(gè)操作數(shù)進(jìn)行操作。例如:-a是對a進(jìn)行一目負(fù)操作。

二目操作(或多目操作)是指兩個(gè)操作數(shù)(或多個(gè)操作數(shù))進(jìn)行操作。

/與%的用法:/若兩操作數(shù)為整數(shù),則結(jié)果為整型。否則,執(zhí)行實(shí)數(shù)除,結(jié)果為double。

例:15/3=33/6=0–8/5=-115.0/3=15/3.0=15.0/3/0=5.0L%兩操作數(shù)必須為整數(shù),結(jié)果符號同左操作數(shù)。不能用于浮點(diǎn)數(shù)例:17%5=2或17%-5=2

5/10=5

-17%5=-210/2=0/與%的關(guān)系:a%b=a-a/b*b(a,b為整數(shù))

例:17%5=17-17/5*5=17-3*5=2

另外,由于TurboC中字符型數(shù)會(huì)自動(dòng)地轉(zhuǎn)換成整型數(shù),因此字符型數(shù)也可以參加二目運(yùn)算?!纠?/p>

main(){charm,n;m='c';n=m+'A'-'a';...}

/*定義字符型變量*//*給m賦小寫字母'c'*//*將c中的小寫字母變成大寫字母'B'后賦給n*/

上例中m=‘c’即m=98,字母A和a的ASCII碼值分別為65和97。這樣可以將小寫字母變成大寫字母,反之,如果要將大寫字母變成小寫字母,則用c+'a'-'A'進(jìn)行計(jì)算

2算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級C算術(shù)表達(dá)式:用算術(shù)符和括號將運(yùn)算對象(也稱操作數(shù),包括常量、變量、函數(shù)等到連接起來的,符合C語法規(guī)則的式子。如:a*b/c-(1.5+’a’)注意事項(xiàng):⑴左右括號必須配對,運(yùn)算時(shí)稱計(jì)算內(nèi)括號表達(dá)式的值,再計(jì)算外層括號內(nèi)表達(dá)式。⑵雙目運(yùn)算符兩側(cè)操作數(shù)類型必須一致,若不一致系統(tǒng)將自動(dòng)按照規(guī)則對操作數(shù)類型轉(zhuǎn)換,再進(jìn)行相應(yīng)操作。運(yùn)算符優(yōu)先級:先按運(yùn)算符優(yōu)先級別高低次序執(zhí)行(見P375附錄Ⅲ)()、-(負(fù))、*、/、%、+、-運(yùn)算結(jié)合方向:若一個(gè)運(yùn)算對象兩側(cè)運(yùn)算符的運(yùn)算符優(yōu)先級別相同,則按結(jié)合方向處理。左結(jié)合性(自左至右、左結(jié)合):運(yùn)算對象先與左面的運(yùn)算符結(jié)合。右結(jié)合性:運(yùn)算對象先與右面的運(yùn)算符結(jié)合。例:a-b*c//“*”優(yōu)先于“-”

a-b+c//“-”與“+”同級,按左結(jié)合規(guī)則2.自增、自減運(yùn)算

在TurboC中有兩個(gè)很有用的運(yùn)算符,在其它高級語言中通常沒有。這兩個(gè)運(yùn)算符就是自增"++"和自減"--"運(yùn)算符和,運(yùn)算符"++"是操作數(shù)加1,而"--"則是操作數(shù)減1

例如:x=x+1可寫成x++,或++xx=x-1可寫成x--,或--xx++(x--)與++x(--x)在上例中沒有什么區(qū)別,但x=m++和x=++m卻有很大差別。

x=m++表示將m的值賦給x后,m加1。

x=++m表示m先加1后,再將新值賦給x。

前綴式或后綴式自增運(yùn)算符自增、自減運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性?!?+”或“--”可以出現(xiàn)在操作數(shù)前面前綴式:++i,--i:先將操作數(shù)增(減)1,后取操作數(shù)的新值作為表達(dá)式的結(jié)果.后綴式:i++,i--:將操作數(shù)增(減)之前的值作為表達(dá)式的結(jié)果,操作數(shù)的增(減)1運(yùn)算是在引用表達(dá)式的值之后完成的.說明:

a.“++”和“--”只能用于變量,不能用于常量或表達(dá)式

b.“++”和“--”結(jié)合方向?yàn)椤坝医Y(jié)合”【例】main(){

inti=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);}

/*i的初值為8*//*i先加1后輸出:9*//*i先減1后輸出:8*//*先輸出i:8之后i再加1(為9)*//*先輸出i:9之后i再減1(為8)*//*先輸出i:-8之后i再加1(為9)*//*先輸出i:-9之后i再減1(為8)*/【例】main(){

inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);

printf("%d,%d,%d,%d",p,q,i,j);}對P=(i++)+(i++)+(i++)應(yīng)理解為:三個(gè)i相加,故P值為15。然后i再自增1三次相當(dāng)于加3故i的最后值為8。對q=(++j)+(++j)+(++j)應(yīng)理解為:j先自增1,再參與運(yùn)算,由于j自增1三次后值為8,三個(gè)8相加的和為24,j的最后值仍為8。語句中p=(i++)+(i++)+(i++)和p=i+++i+++i++等價(jià),q=++j+++j+++j與q=((++(j++)+j++)+j等價(jià)

main(){intx=0,y=1;

printf(“x=%d,y=%d\n”,x,y);

printf(“x++=%d\n”,x++);

printf(“y--=%d\n”,y--);

printf(“x=%d,y=%d\n”,x,y);}結(jié)果輸出:x=0,y=1 x++=0

y--=1

x=1,y=0§9賦值運(yùn)算符與賦值表達(dá)式

1.賦值運(yùn)算符

“=”由“=”連接的式子稱為賦值表達(dá)式。

其一般形式為:變量=表達(dá)式

例如:

x=a+bw=sin(a)+sin(b)y=i+++--j

賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此a=b=c=5

可理解為a=(b=(c=5))

在C中凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。例如,式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a(bǔ),b相加,和賦予x,故x應(yīng)等于13。在C語言中也可以組成賦值語句,按照C語言規(guī)定,任何表達(dá)式在其未尾加上分號就構(gòu)成為語句。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。2.賦值語句中的數(shù)據(jù)類型轉(zhuǎn)換

類型轉(zhuǎn)換是指不同類型的變量混用時(shí)的類型改變。如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。在賦值語句中,類型轉(zhuǎn)換規(guī)則是:等號右邊的值轉(zhuǎn)換為等號左邊變量所屬的類型。具體規(guī)定如下:

實(shí)型賦予整型:舍去小數(shù)部分。

整型賦予實(shí)型:數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。

字符型賦予整型:由于字符型為一個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。

整型賦予字符型:只把低八位賦予字符量。

總原則:按存儲單元中存儲形式直接傳送。

賦值轉(zhuǎn)換左右轉(zhuǎn)換說明例intfloat,doubl舍棄實(shí)數(shù)的小數(shù)部分inti;i=2.56;則I為2intcharint變量低8位取char數(shù)據(jù)8位;int變量高8位:若將字符處理為unsigned,高8位補(bǔ)0;若將字符處理為signed,高8位同字符最高位,即符號擴(kuò)展。intlong只long中低16位送int,inta;longb=8;a=b;11111110X=‘\376’0000000011111110i1111111111111110i000000000000000000000000000010000000000000001000左右轉(zhuǎn)換說明例float,doubleint將整型轉(zhuǎn)換為實(shí)型floatf;doubled;f=23;則為23.00000d=23;則為23.00000000000000floatdouble截取前7位有效數(shù)(但不能溢出)floatf;doubled=123.456789e100;f=d;溢出錯(cuò)誤doublefloat數(shù)據(jù)不變,有效位擴(kuò)到16位(內(nèi)存中以64bit存儲)charintshortlong取低8位inti=289;charc=‘a(chǎn)’;c=I;longintint

送long低16位,long低16位為符號擴(kuò)展longintunsignedint不需符號擴(kuò)展,高位補(bǔ)0.000000010010000100100001iC=33左右轉(zhuǎn)換說明例signedIntlongshortunsignedunsignedIntunsignedlongunsignedshort將unsigned內(nèi)容原樣賦值(若數(shù)據(jù)超過范圍,則出現(xiàn)錯(cuò)誤數(shù)據(jù))unsignedinta=65535;intb;b=a;11111111111111111111111111111111【例】voidmain(){

inta,b=322;floatx,y=8.88;charc1='k',c2;a=y;x=b;a=c1;c2=b;printf("%d,%f,%d,%c",a,x,a,c2);}

本例表明賦值運(yùn)算中類型轉(zhuǎn)換規(guī)則。實(shí)型量y值8.88后取整數(shù)8后賦予a。整型量b值322后增加小數(shù)部分后賦予x。字符型量c1轉(zhuǎn)換為為整型后賦予a;整型量b取其低八位為字符型后賦予c2;(b的低八位為01000010,即十進(jìn)制66,按ASCII碼對應(yīng)于字符B)。作除法運(yùn)算時(shí)應(yīng)特別注意數(shù)據(jù)類型轉(zhuǎn)換規(guī)則?!纠?/p>

main(){floatf;

inti=15;f=i/2;}

上面程序經(jīng)運(yùn)行后,f=7并不等于準(zhǔn)確值7.5。main(){floatf;

inti=15;f=i/2.0;}正確的為也可直接將i定義為浮點(diǎn)數(shù)。3.復(fù)合賦值符及表達(dá)式

在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。

構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式

它等效于:

變量=變量運(yùn)算符表達(dá)式

例如:a+=5等價(jià)于a=a+5x*=y+7等價(jià)于x=x*(y+7)r%=p等價(jià)于r=r%p4.賦值表達(dá)式賦值表達(dá)式:由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子.形式:<變量><賦值運(yùn)算符><表達(dá)式>

<賦值運(yùn)算符>可為復(fù)合賦值運(yùn)算符,按照自右向左結(jié)合順序.例:a=(b=5)

/*b=5,a=5,由于“=”右結(jié)合,等價(jià)于a=b=5*/a=b=c=5/*表達(dá)式值為5*/a=5+(c=6)

/*c=6,a=11,表達(dá)式值為11*/a=(b=10)/(c=2)

/*b=10,c=2,a=5,表達(dá)式值為5*/ a+=a-=a*a

/*設(shè)a初值為12,則最后結(jié)果為-264*/

a+=a=a-a*a=12-12*12=-132a=a+a=(-132)+(-132)=-264

printf(“%d”,a=b);/*將b的賦給a,并輸出a的值*/§10

TurboC的特殊運(yùn)算符

1.“?:”條件運(yùn)算符

“?:"運(yùn)算符是一個(gè)三目運(yùn)算符,其一般形式是:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>;

"?:"運(yùn)算符的含義是:先求表達(dá)式1的值,如果為真,則求表達(dá)式2的值并把它作為整個(gè)表達(dá)式的值;如果表達(dá)式1的值為假,則求表達(dá)式3的值并把它作為整個(gè)表達(dá)式的值?!纠?/p>

main(){

intx,y;x=50;y=x>70?100:0;/*將條件表達(dá)式的結(jié)果賦于y*/}

本例中,y將被賦初值0。如果x>70,y將被賦值100。因此,"?"運(yùn)算符可以代替某些if-then-else形式的語句。

2."&"和"*"運(yùn)算符

"&"運(yùn)算符是一個(gè)返回操作數(shù)地址的單目操作符。

"*"運(yùn)算符是對"&"運(yùn)算符的一個(gè)補(bǔ)充,它返回位于這個(gè)地址內(nèi)的變量值,也是單目操作符?!纠縨ain(){

inti,j,*m;i=10;m=&i;j=*m;}/*將變量i的地址賦給m*//*地址m所指的單元的值賦給j*/

上面程序運(yùn)行后,i=10,m為其對應(yīng)的內(nèi)存地址,j的值也為10。3.“,”逗號運(yùn)算符和逗號表達(dá)式“,”運(yùn)算符(順序運(yùn)算符):用于將多個(gè)表達(dá)式串在一起,是所有運(yùn)算符中優(yōu)先級別最低的運(yùn)算符逗號表達(dá)式:<表達(dá)式1>,<表達(dá)式2>逗號表達(dá)式求解過程:兩個(gè)表達(dá)式按從左向右順序求值,每個(gè)表達(dá)式的求值是分開進(jìn)行的,先求<表達(dá)式1>,再求<表達(dá)式2>,逗號表達(dá)式的值是表達(dá)式2的值,對逗號運(yùn)算符不進(jìn)行類型轉(zhuǎn)換。【例】

main(){

intx,y;x=50;y=(x=x-5,x/5);/*x減5后為45賦給x,再x/5為9賦給y*/

printf(“x=%d,y=%d\n”,x,y);/*但不賦于a*/}運(yùn)行結(jié)果:x=45,y=9嵌套的逗號表達(dá)式一個(gè)逗號表達(dá)式與另一個(gè)表達(dá)式組成的一個(gè)新的表達(dá)式。其結(jié)果和類型同最后一個(gè)表達(dá)式值。例:(a=3*5,a*4),a+5/*表達(dá)式的值為20*/

①a=15②15*4

③表達(dá)式1的值為60

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論