高級程序設(shè)計課件_第1頁
高級程序設(shè)計課件_第2頁
高級程序設(shè)計課件_第3頁
高級程序設(shè)計課件_第4頁
高級程序設(shè)計課件_第5頁
已閱讀5頁,還剩628頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C語言基礎(chǔ)1.1C語言概述1.2基本語法成份1.3C程序的結(jié)構(gòu)1.4C程序的實現(xiàn)1.1C語言概述1.1.1C語言的產(chǎn)生與發(fā)展1.C語言的產(chǎn)生

C語言于1972年~1973年間,誕生于美國的貝爾實驗室,由Denis.M.Ritchie創(chuàng)建。

C語言的產(chǎn)生基于兩個方面的需要。一是為滿足UNIX操作系統(tǒng)開發(fā)的需要。UNIX操作系統(tǒng)是一個通用的、復(fù)雜的計算機管理系統(tǒng)。二是為拉近高級語言與硬件之間距離的需要。

C語言集高級語言與匯編語言優(yōu)點于一身。

C語言面對實際應(yīng)用的需要而產(chǎn)生,直至今日仍不改初衷。2.C語言的發(fā)展1960年出現(xiàn)的ALGOL語言是一種面向問題的高級語言,遠離硬件,不適于開發(fā)系統(tǒng)軟件。1963年,英國劍橋大學(xué)推出CPL語言,CPL語言比ALGOL語言接近硬件一些,但規(guī)模較大,難以實現(xiàn)。1969年,劍橋大學(xué)的M.Richards對CPL語言進行簡化,推出BCPL語言(BCPL—BasicCombinedProgrammingLanguage)。1970年,貝爾實驗室的K.Thompson為DEC公司PDP[CD*2]7計算機上運行的一種早期UNIX操作系統(tǒng)設(shè)計了一種類BCPL語言,稱為B語言。B語言規(guī)模小,接近硬件,1971年在PDP-11計算機上實現(xiàn),并寫了UNIX操作系統(tǒng)。1960年~1971年是C語言的萌芽階段。1972年~1973年間,貝爾實驗室的D.M.Ritchie在保留B語言優(yōu)點的基礎(chǔ)上,創(chuàng)建了C語言。1973年,UNIX操作系統(tǒng)被用C語言改寫,稱為UNIX第五版。最初的C語言只是一種UNIX操作系統(tǒng)的工作語言,依附于UNIX系統(tǒng),主要在貝爾實驗室內(nèi)部使用。

UNIX以后的第六版、第七版、SYSTEMⅢ和SYSTEMⅤ都是在第五版的基礎(chǔ)上發(fā)展起來的,C語言也作了多次改進。到1975年,UNIX第六版的公布,使C語言受到人們的普遍注意。UNIX操作系統(tǒng)的廣泛使用,促進了C語言的迅速發(fā)展與普及,C語言的發(fā)展與普及也促進了UNIX操作系統(tǒng)的推廣。到1978年出現(xiàn)了獨立于UNIX和PDP計算機的C語言,從而,C語言被迅速移植到大、中、小與微型機上。當(dāng)年,B.W.Kernighan和D.M.Ritchie以UNIX第七版的C編譯程序為基礎(chǔ),出版了影響深遠的名著《C程序設(shè)計語言》。

C++語言是C語言發(fā)展的新階段,是一種更好的C語言,是應(yīng)用廣泛的面向?qū)ο蟮某绦蛟O(shè)計語言。

3.C語言的標(biāo)準(zhǔn)與方言

各機構(gòu)推出了自己的C語言與版本,某些執(zhí)行過程的微小差別不時引起C程序之間的不兼容。美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)從1983年開始,經(jīng)過長達五年的努力,制定了C語言的新標(biāo)準(zhǔn)——ANSIC,現(xiàn)在提及C語言的標(biāo)準(zhǔn)就是指該新標(biāo)準(zhǔn)。ANSIC比原標(biāo)準(zhǔn)C有很大的發(fā)展,解決了經(jīng)典定義中的二義性,給出了C語言的新特點。K&R也以新標(biāo)準(zhǔn)改寫了他們的經(jīng)典著作。任何C程序都必須遵循ANSIC標(biāo)準(zhǔn),本教材的主體也以ANSIC作為基礎(chǔ)。1.1.2C語言的特點

(1)C語言簡潔、緊湊,壓縮了一切不必要的成份。

(2)C語言運算豐富,將括號、賦值、強制類型轉(zhuǎn)換、取變量地址等都以運算實現(xiàn)。

(3)C語言數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)類型;用戶能擴充數(shù)據(jù)類型,能夠?qū)崿F(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),完成各種問題的數(shù)據(jù)描述。

(4)C語言是一種結(jié)構(gòu)化程序設(shè)計語言,具有結(jié)構(gòu)化語言所要求的三種基本結(jié)構(gòu)。(5)C語言允許直接訪問物理地址,能進行位運算,能實現(xiàn)匯編語言的大部分功能,能直接對硬件進行操作。C語言是高級語言中的低級語言。

(6)C語言提供預(yù)處理機制,有利于大程序的編寫和調(diào)試。

(7)C語言編譯系統(tǒng)小,生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。

(8)C語言輸入/輸出功能用庫函數(shù)實現(xiàn),編寫的程序移植性好。

(9)C語言語法限制不太嚴(yán)格,程序設(shè)計自由度大,對程序員要求不高。1.2基本語法成份1.2.1字符集

字符是可以區(qū)分的最小符號,構(gòu)成程序的原始基礎(chǔ)。C語言字符集是ASCII字符集的一個子集,包括英文字母、數(shù)字及特殊字符:

·

英文字母:a~z和A~Z

·

數(shù)字:0~9

·

特殊字符:空格!#%^&*--+=~<>/\|.,:;?′″()[]{}

由字符集中的字符可以構(gòu)成C語言進一步的語法成份,如標(biāo)識符、關(guān)鍵字、特殊的運算符等。1.2.2標(biāo)識符

標(biāo)識符在程序中用來標(biāo)識各種程序成份,命名程序中的一些實體,如變量、常量、函數(shù)、類型、標(biāo)號等對象的名字。

C語言規(guī)定,標(biāo)識符必須以英文字母或下劃線開頭,是字母、數(shù)字、下劃線的序列。以下是合法的標(biāo)識符:x,c,a1,a2,op,y-1,zhou-prg,radius,prime,program,prg-1,cout,sun,day

以下是不合法的標(biāo)識符:a.1,1computer,x+y,!abc,99999,$100,π,3cC語言中標(biāo)識符要區(qū)分大小寫,標(biāo)識符abc與標(biāo)識符ABC是不同的標(biāo)識符。習(xí)慣上符號常量用大寫字母表示,變量名稱用小寫字母表示。標(biāo)準(zhǔn)C中,標(biāo)識符的長度可以是任意的,一般有效長度為8個字符,TURBOC中標(biāo)識符最大長度為32個字符。標(biāo)識符取名時不能與關(guān)鍵字同名,也不能與系統(tǒng)預(yù)先定義的標(biāo)準(zhǔn)標(biāo)識符(如標(biāo)準(zhǔn)函數(shù))同名,最好能“見名知義”,以提高程序的可讀性。一般選用相應(yīng)英文單詞或拼音的縮寫形式,盡量不要使用簡單代數(shù)符號,如a,b,c,x,y,z等。標(biāo)識符大多數(shù)采用“匈牙利”表示法,每個單詞第一個字母大寫,如StudentName、YearMonthDate。1.2.3關(guān)鍵字

關(guān)鍵字又稱為保留字,由系統(tǒng)提供,用以表示特定的語法成份,如類型名稱int、float,語句特征if、switch、while,運算符號sizeof等,是構(gòu)成C語言的語法基礎(chǔ)。常見關(guān)鍵字有31個,參見附錄A。關(guān)鍵字有特定的語法含義,不允許用戶重新定義。關(guān)鍵字在程序中像國家的名字一樣,絕對不能拼錯。1.2.4運算符運算符實際上可以認(rèn)為是系統(tǒng)定義的函數(shù)名字,這些函數(shù)作用于運算對象,得到一個結(jié)果值。運算符通常由1個或多個字符構(gòu)成。根據(jù)運算對象的個數(shù)不同,運算符可分為單目運算符、雙目運算符和三目運算符,又稱為一元運算符、二元運算符和三元運算符。1.3C程序的結(jié)構(gòu)例1-1

在屏幕上輸出“C語言程序設(shè)計”。/*程序1[CD*2]1,輸出″thisisaCprogram.″*/#include″stdio.h″main(){printf(″thisisaCprogram.\n″);}運行結(jié)果:thisisaCprogram.例1–2

求兩個整數(shù)之和。

/*程序1-2,求兩個整數(shù)之和*/

#include″stdio.h″main(){inta,b;intsum;scanf(″%d,%d″,&a,&b);sum=a+b;printf(″sum=%d\n″,sum);}輸入數(shù)據(jù):1999,1運行結(jié)果:和=2000例1-3

求兩個數(shù)的最大值。

/*程序1-3,求兩個數(shù)的最大值*/

#include″stdio.h″intmax(intx,inty)/*求最大值函數(shù){intt;if(x>y)t=x;elset=y;return(t);}main()/*主函數(shù)*/{inta,b;intc;scanf(″%f,%f″,&a,&b);c=max(a,b);/*調(diào)用求最大值的函數(shù)*/printf(″max=%d\n″,c);}輸入數(shù)據(jù):12,3運行結(jié)果:max=121.3.1C程序的結(jié)構(gòu)1.函數(shù)

(1)C程序由若干函數(shù)組成,其核心成份是函數(shù)。①必須有一個且只能有一個主函數(shù)main(),主函數(shù)的名字為main。②可以是系統(tǒng)預(yù)定義的標(biāo)準(zhǔn)函數(shù),如scanf函數(shù)、printf函數(shù)等,參見附錄C。大多數(shù)函數(shù)由程序員根據(jù)實際問題的需要進行定義,函數(shù)之間是平行的關(guān)系?;诖?C語言被稱為函數(shù)式語言。(2)函數(shù)由函數(shù)頭(函數(shù)的說明部分)與函數(shù)體(函數(shù)的語句部分)兩部分組成。①函數(shù)頭給出函數(shù)的特征描述,包括函數(shù)的屬性、類型、名字、參數(shù)及參數(shù)類型。如例1[CD*2]3中的求最大值函數(shù)的函數(shù)頭:intmax(intx,inty)/*函數(shù)屬性缺省,函數(shù)類型整型,函數(shù)名字max,函數(shù)參數(shù)x,y,整型*/等同于intmax(x,y)intx,y;②函數(shù)體給出函數(shù)功能實現(xiàn)的數(shù)據(jù)描述和操作描述,是程序中用花括號括起的若干語句。如例1-1中的函數(shù)體:{printf(″thisisaCprogram.″);}

函數(shù)體可以為空,可以沒有數(shù)據(jù)描述部分。2.語句

(1)語句是組成程序的基本單位,函數(shù)功能的實現(xiàn)由若干條語句完成。說明性語句完成數(shù)據(jù)描述,執(zhí)行性語句完成操作描述。

(2)語句由若干關(guān)鍵字加以標(biāo)識,如if-else語句、do-while語句等。C語言語句必須以分號結(jié)束。

(3)C語言本身沒有輸入/輸出語句,C語言的輸入/輸出操作由scanf函數(shù)和printf函數(shù)等庫函數(shù)完成。3.其它

1)預(yù)處理命令

C程序開始往往含有以“?!遍_頭的命令,它們是預(yù)處理命令。如例1-1中#include″stdio.h″,用以指明包含文件。請參閱第12章。

2)程序注釋在程序中還有以“/*”開始,以“*/”結(jié)束的內(nèi)容,它們是程序中的注釋部分,用以幫助閱讀程序。注釋對程序的執(zhí)行沒有任何影響,編譯時將被過濾掉。加必要的注釋只為增加程序的可讀性。1.3.2C程序的書寫(1)一行一般寫一條語句。當(dāng)然一行可以寫多條語句,一條語句也可以寫在多行上。

(2)整個程序采用緊縮格式書寫。表示同一層次的語句行對齊,縮進同樣多的字符位置。如循環(huán)體中的語句要縮進對齊,選擇體中的語句要縮進對齊。

(3)花括號的書寫方法較多,本書采用花括號對齊的書寫方式,左邊花括號處于第一條語句的開始位置,右邊花括號獨占一行,與左邊花括號對齊。

(4)在程序中恰當(dāng)?shù)厥褂每招?,分隔程序中的語句塊,增加程序的可讀性。1.4C程序的實現(xiàn)1.4.1實現(xiàn)步驟C程序在計算機上的實現(xiàn)與其它高級語言程序的實現(xiàn)一樣,一般要經(jīng)過編輯、編譯、連接、運行四個步驟,如圖1-1所示。圖1-11.編輯

編輯是將C語言的源程序輸入計算機,并以文本文件的形式存儲在磁盤。編輯是建立C源程序文件的過程,源程序文件的擴展名為.C或.CPP。編輯可以用任何文字處理軟件完成,一般用編譯器本身集成的編輯器進行編輯。2.編譯

C語言是以編譯方式實現(xiàn)的高級語言,C程序的實現(xiàn)必須經(jīng)過編譯程序?qū)υ闯绦蜻M行編譯,生成目標(biāo)代碼程序。目標(biāo)代碼程序的擴展名為.OBJ。編譯前先進行預(yù)處理。編譯過程主要進行詞法分析和語法分析。編譯有錯時,在屏幕上列出錯誤的位置和種類。此時,要返回到編輯步驟修改源程序,修改后,再進行編譯。3.連接

編譯形成的目標(biāo)代碼程序機器可以識別,但還不能直接執(zhí)行,還需要將目標(biāo)代碼程序與庫文件進行連接處理,連接工作由連接程序完成。經(jīng)過連接,生成可執(zhí)行文件??蓤?zhí)行文件的擴展名為.EXE。連接有錯同樣需返回到編輯步驟修改源程序,修改后,再進行編譯、連接。4.運行

一個C源程序經(jīng)過編譯、連接后生成了可執(zhí)行文件。運行可執(zhí)行文件,可通過編譯系統(tǒng)下的運行功能,也可像執(zhí)行DOS的外部命令一樣,輸入執(zhí)行文件名運行。程序運行后,一般在屏幕上顯示運行結(jié)果。根據(jù)運行結(jié)果可以判斷程序是否還有算法方面的錯誤。編譯時產(chǎn)生的錯誤是語法錯誤,運行時出現(xiàn)的錯誤是邏輯錯誤。出現(xiàn)邏輯錯誤時需要修改算法,重新編輯、編譯、運行程序。1.4.2程序的執(zhí)行C程序的執(zhí)行總是從主函數(shù)main()開始,不管主函數(shù)在程序中什么位置。主函數(shù)中的語句依先后順序執(zhí)行,除非改變了程序的執(zhí)行流程。其它函數(shù)通過被調(diào)用執(zhí)行。1.4.3TURBOC上機操作1.啟動TURBOC

只需執(zhí)行TC.EXE文件,即可啟動TURBOC進入TURBOC的操作界面。如使用中文,需先將計算機置于中文操作系統(tǒng)管理之下。用TC加源程序文件名可快速啟動TURBOC,立即進入編輯操作。2.TURBOC操作界面啟動TURBOC后,主操作界面如圖1-2所示。圖1-21)組成

TURBOC主操作界面由主菜單區(qū)、編輯窗口、信息窗口、熱鍵區(qū)四部分組成。

TURBOC的操作采用菜單驅(qū)動,主菜單包括File(文件操作)、Edit(編輯操作)、Run(運行操作)、Compile(編譯操作)、Project(工程文件)、Options(編譯選擇)及Debug(跟蹤排錯)各項。熱鍵區(qū)提供常用操作的快速功能鍵方式,如F1(幫助)、F2(保存文件)、F3(裝入文件)、F5(縮放窗口)、F6(切換窗口)、ALT+F5(用戶屏幕)、ALT+X(退出TURBOC)等。2)主窗口當(dāng)前操作窗口為主窗口(工作窗口),主窗口為雙線框表示,按F6可切換主窗口,按F5可縮放主窗口。

3)菜單選擇方式一:按F10進入主菜單區(qū),通過菜單項的大寫字母選擇相應(yīng)菜單項,或通過光標(biāo)控制鍵(→、←、↑、↓)移動高亮度光棒至相應(yīng)菜單項,按回車選擇相應(yīng)菜單項。方式二:用熱鍵ALT加相應(yīng)菜單項的大寫字母,選擇相應(yīng)菜單項。對子菜單項的選擇,操作方法類似。3.編輯

編輯在編輯窗口中進行,有多種方式進入編輯環(huán)境:

方式一:選擇Edit項。方式二:選擇File項的子項New,用于編輯新程序。方式三:選擇File項的子項Load,裝入要修改的程序,用于修改程序。方式四:啟動時采用快速啟動方式。

TURBOC的編輯操作是Wordstar、WPS等字處理軟件編輯操作的子集,它與Wordstar、WPS的編輯操作完全類似。

4.編譯

TURBOC將編譯、連接一道完成。按熱鍵F9或選擇Compile項進入編譯。編譯時發(fā)生錯誤,返回編輯步驟,修改程序后,再編譯程序。

5.運行按熱鍵CTRL+F9或選擇Run項下的子項Run,運行計算機中的程序。按ALT+F5鍵或選擇Run項下的子項UserScreen進入用戶屏幕,查看程序運行結(jié)果。運行時發(fā)生錯誤,返回編輯步驟,修改程序后,再編譯、運行程序。對于沒編譯的程序,選擇運行會先自動進行編譯操作,再運行程序。

算法舉例

例1求5!(1×2×3×4×5)

s1,1→ps2,2→Is3,P×i→ps4,I+1→Is5,輸出p完整的算法s1,1→p

s2,2→I

s3,當(dāng)I<=5為真時到s4;為假時到s7

s4,P×i→ps5,I+1→I

s6,轉(zhuǎn)到s3

s7,輸出p

開始1→p2→II<=5ftP×i→pI+1→I

輸出p

結(jié)束循環(huán)1→p2→II<=5P×i→pI+1→I輸出p流程圖表示N-S圖表示計算機語言表示Main(){intp,I;p=1;I=2;while(I<=5){p=p*I;I++;}printf(“%d”,p);}例250個學(xué)生,打印成績大于等于80的學(xué)生的學(xué)號和成績。s1,I=1s2,I<=50為真時到s3;為假時到s6s3,gi>=80為真時打印ni和gi;為假時空操作s4,I=I+1s5,轉(zhuǎn)到s2s6,結(jié)束開始1→iI<=50打印ni和giI+1→IGi>=80結(jié)束1→iI+1→ItGi>=80f打印ni和giI+1→I流程圖表示N-S圖表示fttf偽代碼表示BEGIN(算法開始)I=1;WhileI<=50{inputn1andgiI=I+1;}I=1;whileI<=50{ifgi>=80printniandgiI=I+1}END(算法結(jié)束)三種基本結(jié)構(gòu)的n-s圖表示

ABTPFAB順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)P1成立

AB

直到P1成立當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)構(gòu)例4求1-1/2+1/3-1/4+…+1/99-1/00算法可表示如下:S1,sign=1S2,sum=1S3,deno==2S4,sign=(-1)*signS5,term=sign*(1/deno)S6,sum=sum+termS7,deno=deno+1S8,若deno<=100返回s4,否則算法結(jié)束開始Sum=1Deno=2sign-=1sign=(-1)*signterm=sign*(1/deno)sum=sum+termdeno=deno+1NDeno>100Y結(jié)束sum=1Deno=2Sign=1Sign=(-1)*signTerm=sign*1/denosum=sum+termDeno=deno+1直到deno>100

打印sumN-S圖表示流程圖表示計算機語言表示Main(){intsign=1;floatdeno=2.0;,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}Printf(“%f”,sum);}習(xí)題:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和.例5:對于一個大于或等于3的正整數(shù),判斷它是不是一個素數(shù)S1:輸入n的值s2:I=2(I作為除數(shù))S3:N被I除,得余數(shù)rS4:如果r=0,表示n能被I整除,則打印n”不是素數(shù)“,算法結(jié)束;否則轉(zhuǎn)到s5S5:I=I+1S6:如果I<=n-1,返回s3;否則打印n”是素數(shù)“,然后結(jié)束.輸入nW=0I=2R=n/I的余數(shù)是r=0否W=1I=I+1直到了I>或w<>0是w=0否輸出n是素數(shù)輸出n不是素數(shù)N-S圖表示計算機語言表示#include<math.h>Main(){intn,I,k;scanf(“%d”,&n);k=sqrt(n);for(I=2;I<=k;I++)if(n%I==0)break;if(I>k)printf(“%disaprimenumber”,n);elseprintf(“%disnotaprimenumber”,n);}結(jié)構(gòu)化程序設(shè)計方法

例6:用篩法(埃拉托色尼篩法)求1-200之間的所有素數(shù)

1234567891011121314151617181920………….200A:B:C:

輸入1~n

把所有非素數(shù)去掉

打印全部素數(shù)輸入n的值I=1當(dāng)I<=nxi=II=I+1A:將x1去掉(使x1=0)I=2當(dāng)I<n的平方根的整數(shù)如xi未去掉,則xi+1xn間全部是xi倍數(shù)的數(shù)去掉

I=I+1B:I=1

當(dāng)I<=n

打印未挖掉的xiI=I+1C:算法的進一步細化B1B2B3D3.1數(shù)據(jù)類型-數(shù)據(jù)類型基本類型整型字符型實型(浮點型)單精度型雙精度型枚舉型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型指針類型空類型3.1.1常量的定義方法

常量是在程序運算過程中不變的量。常量在程序中經(jīng)常直接出現(xiàn),如123、3.14159、′a′、″computer″,此時只要求它們符合相應(yīng)類型數(shù)據(jù)的表示方法。相應(yīng)于各種數(shù)據(jù)類型,有整型常量、浮點型常量、字符型常量及字符串常量。

常量定義是指定義符號常量,用一個標(biāo)識符來代表一個常量,通過宏定義預(yù)處理指令來實現(xiàn)。格式:#define標(biāo)識符常量由用戶命名的標(biāo)識符是符號常量名。作為符號常量名,一般大寫。一旦定義,在程序中凡是出現(xiàn)常量的地方均可用符號常量名來代替。對使用了符號常量的程序在編譯前會以實際常量替代符號常量。例2–5

求圓的面積。/*程序2-5,求圓的面積*/#definePI3.14#defineR2#include″stdio.h″main(){floats;s=PI*R*R;printf(″面積=%6.3f″,s);}運行結(jié)果:面積=12.5603.1.2變量定義1.變量定義方法

i格式:類型名變量表;變量的值變量表是用逗號分開的變量名。例如:存儲單元①inti,j;/*定義i,j為整型變量*/②floatx,y;/*定義x,y為實型變量*/③charch;/*定義ch為字符型變量*/35

2.變量的初始化

定義了變量,變量并沒有值??梢栽诙x變量的同時給出初值,對變量進行初始化。例如:①inti=9;/*定義整型變量i,初值為9*/②floatr=1.5;/*定義實型變量r,初值為1.5*/③charanswer=′y′;/*定義字符型變量answer,初值為字符y*/3.2整型3.2.1基本整型1.類型名稱

int

2.取值范圍

-32768~+32767(-215~215-1)

3.數(shù)據(jù)表示方法與數(shù)學(xué)上類似,不能有分隔符。C語言允許使用八進制整數(shù)與十六進制整數(shù),八進制整數(shù)加前導(dǎo)0(數(shù)字),十六進制整數(shù)加前導(dǎo)0X。

4.運算操作

(1)算術(shù)運算包括:+(加法)、-(減法)、*(乘法)、/(除法)、%(求余),運算規(guī)則除除法外,與數(shù)學(xué)中相同。整數(shù)的除法運算是整除,得到商,如5/3結(jié)果為1。對于負(fù)數(shù),多數(shù)機器采用向零取整法,如-5/3結(jié)果為-1。求余運算,又稱取模運算,得到余數(shù),如5%3結(jié)果為2,-5%3結(jié)果為-2。求余運算在許多場合都非常有用,如判斷整數(shù)a是不是b的倍數(shù),可看a%b是否等于零。a%10得到a的個位數(shù)字,a/10)%10得到a的十位數(shù)字,如此可分離一個整數(shù)的數(shù)字。一般只有除數(shù)大于0,求余運算才有意義。當(dāng)a小于0時,a%b等于-((-a)%b)。(2)關(guān)系運算包括:<(小于)、<=(小于等于)、==(等于)、!=(不等于)、>(大于)、>=(大于等于)等六種,運算規(guī)則與數(shù)學(xué)中相同,運算結(jié)果為邏輯類型數(shù)據(jù)。關(guān)系運算成立結(jié)果為1,不成立結(jié)果為0。5.存儲

C標(biāo)準(zhǔn)沒有具體規(guī)定各類數(shù)據(jù)存儲的字節(jié)數(shù),各種機器處理有所不同,一般以一個機器字(Word)存放1個int數(shù)據(jù),PC機上int數(shù)據(jù)存儲用兩個字節(jié)。機器中用最高位表示數(shù)的符號,正數(shù)符號位用0表示,負(fù)數(shù)符號位用1表示。負(fù)數(shù)在機器中存放的是其補碼。6.應(yīng)用例2-1

求兩個整數(shù)的積。/*程序2-1,求兩個整數(shù)之積*/#include″stdio.h″main(){inta,b;intm;printf(″請輸入兩個整數(shù)a,b:″);scanf(″%d,%d”,&a,&b);m=a*b;printf(″積=%d\n″,m);}輸入數(shù)據(jù):2000,1運行結(jié)果:積=20003.2.2拓展整型為拓展數(shù)據(jù)處理的范圍,C語言通過類型修飾符來改變基本數(shù)據(jù)類型的含義,使之精確適合于不同應(yīng)用場合。拓展后的整型有短整型、長整型及無符號整型。

1.類型修飾符

short:縮短數(shù)值所占字節(jié)數(shù)。

long:擴大數(shù)值所占字節(jié)數(shù)。

signed:有符號位,缺省方式。

unsigned:無符號位。2.短整型短整型類型名稱為shortint或short,在TURBOC中,短整型與基本整型相同。

3.長整型長整型類型名稱為longint或long,取值范圍為-231~231-1(-2147483648~2147483647),長整型數(shù)據(jù)可加后綴L表示,在TURBOC中,存儲占4個字節(jié),運算與基本整型相同。

4.無符號整型

無符號數(shù)與有符號數(shù)的主要區(qū)別是數(shù)的最高位不作符號處理,表示數(shù)的絕對范圍是有符號數(shù)的兩倍。相應(yīng)的無符號整型有無符號基本整型、無符號短整型和無符號長整型。無符號基本整型,類型名稱為unsignedint或unsigned,取值范圍為0~65535(0~216-1),存儲占兩個字節(jié)。無符號短整型,類型名稱為unsignedshortint或unsigned,取值、運算、存儲同無符號基本整型。無符號長整型,類型名稱為unsignedlongint或unsignedlong,取值范圍為0~4294967295(0~232-1),存儲占4個字節(jié)。無符號整型常用于處理大整數(shù)及地址數(shù)據(jù)。例2–2

整數(shù)9的機器表示。作為int,0000000000001001作為shortint,0000000000001001作為longint,00000000000000000000000000001001以上第一位為符號位,表示正整數(shù)。以下第一位為正常的數(shù)據(jù)位,非符號位。作為unsignedint,0000000000001001作為unsignedshortint,0000000000001001作為unsignedlongint,000000000000000000000000000010013.3浮點型3.3.1單精度型1.類型名稱float2.取值范圍

絕對值范圍為10-38~1038,7位有效數(shù)字。3.數(shù)據(jù)表示方法

實數(shù)有一般形式和指數(shù)形式兩種表示方法。一般形式又稱小數(shù)表示法,是一種常規(guī)形式,由整數(shù)部分、小數(shù)點、小數(shù)部分三部分組成。C語言中的實數(shù)可以沒有小數(shù)部分或沒有整數(shù)部分,如20.,.375。指數(shù)形式由尾數(shù)、指數(shù)符號e或E、指數(shù)三部分組成,尾數(shù)是一般形式的實數(shù)。指數(shù)形式適于表示較大或較小的實數(shù)。如2.34e10、2.34e-10,相應(yīng)于數(shù)學(xué)中2.34×1010、2.34×10-10

。4.運算操作

實型數(shù)據(jù)的運算操作有算術(shù)運算和關(guān)系運算兩大類,運算符同整型,運算規(guī)則與數(shù)學(xué)中實數(shù)的運算規(guī)則相同,但運算結(jié)果可能是一個近似值。實數(shù)沒有求余運算。

5.存儲

4個字節(jié)6.應(yīng)用例2–3

求兩個實數(shù)的積。/*程序2-3,求兩個實數(shù)之積*/#include″stdio.h″main(){floata,b;floatm;printf(″請輸入兩個整數(shù)a,b:″);scanf(″%f,%f″,&a,&b);m=a*b;printf(″積=%6.3f\n″,m);

輸入數(shù)據(jù):1.1,2.21運行結(jié)果:積=2.4313.3.2雙精度型雙精度型類型名稱為double或longfloat,取值的絕對值范圍為10-308~10308,16位有效數(shù)字,數(shù)的表示與運算操作同單精度型,8個字節(jié)存儲,能提高計算精度。計算機中太大的數(shù)不能表示,太小的數(shù)也不能表示,超出數(shù)的表示范圍稱為溢出,相應(yīng)的有上溢與下溢。對于太大數(shù)的處理必須通過間接的方法進行。3.4字符型3.4.1字符類型

1.類型名稱

char

2.取值范圍

ASCII碼字符集中的字符。3.數(shù)據(jù)表示方法

字符數(shù)據(jù)用單引號作界定符,如′a′、′+′、′%′、′:′、′1′、′2′。注意:單引號字符本身及雙引號、反斜杠字符由于有特定的含義,不能如此表示,數(shù)字字符與數(shù)字不同。字符數(shù)據(jù)本身除了可以直接出現(xiàn),還可以通過反斜杠后跟ASCII碼描述。ASCII碼可采用3位八進制數(shù)或2位十六進制數(shù),相應(yīng)描述形式是\ddd與\xhh(位數(shù)不夠,加0補位),這種表示方法稱為轉(zhuǎn)義表示或轉(zhuǎn)碼表示。尤其是一些特殊的字符只能這樣表示,如圖形字符′■′的表示′\376′,單引號、雙引號、反斜杠可表示成′\047′、′\042′、′\134′。

如此字符A可表示為′A′、′\101′、′\x41′。對一些常用的特殊字符,C語言還提供特定的字符來轉(zhuǎn)義表示:′\n′:回車換行′\\′:反斜杠字符

′\′′:單引號字符′\′′:雙引號字符

′\a′:響鈴報警′\b′:退格

′\f′:走紙換行′\r′:回車

′\t′:橫向跳格′\u′:豎向跳格

4.運算操作

C語言的字符數(shù)據(jù)實際存儲其ASCII碼,存儲形式與整數(shù)的存儲形式類似。C語言中規(guī)定字符數(shù)據(jù)與整型數(shù)據(jù)在ASCII碼取值范圍內(nèi)通用,因而C語言中字符數(shù)據(jù)可進行整型數(shù)據(jù)的運算及操作。例如:①′a′+′b′,等于97+98;②′a′+2,等于97+2;③′a′<′b′等于97<98。5.存儲

1個字節(jié)。6.應(yīng)用例2-4

輸出ASCII碼表。/*程序2-4,輸出ASCII碼表*/#include″stdio.h″main(){inti;printf(″ASCII碼表\n″);for(i=0;i<=255;i++)printf(″字符%c,ASCII碼%d\n″,i,i);}3.4.2字符串?dāng)?shù)據(jù)1.字串表示

字串?dāng)?shù)據(jù)用雙引號作界定符,如:″chinaone″、″computer″、″$123.45″、″\nabc″、″%d%f″2.字串存儲字串?dāng)?shù)據(jù)存儲除存儲構(gòu)成字符串的字符序列本身外,還必須附加存儲字串的結(jié)束標(biāo)志空操作字符′\0′存儲一個字串的字節(jié)數(shù)等于字符個數(shù)加1,即字串長度再加1。

3.字串類型

3.5邏輯類型3.5.1邏輯類型

C語言沒有專門提供邏輯類型,而是借用整型、字符型、實型來描述邏輯數(shù)據(jù)。

C語言規(guī)定,0作為邏輯數(shù)據(jù)代表假,非0的數(shù)作為邏輯數(shù)據(jù)代表真。在一個式子里面要注意區(qū)分作為普通數(shù)據(jù)的數(shù)與作為邏輯數(shù)據(jù)的數(shù)。

C語言同時規(guī)定,邏輯數(shù)據(jù)真為1,邏輯數(shù)據(jù)假為0。如:2<3為真,表達式的值為1;2>3為假,表達式的值為0。3.5.2邏輯運算

假定有邏輯數(shù)據(jù)p、q,邏輯運算的運算規(guī)則為:①!p,得到與p相反的邏輯數(shù)據(jù)。p為真,!p為假;p為假,!p為真;②p&&q,只有p、q同時為真時,運算結(jié)果為真;只要p、q有一個為假,運算結(jié)果為假;③p||q,只要p、q中有一個為真,運行結(jié)果為真;只有p、q同時為假,運算結(jié)果為假。例如:①!(2>3)等于1;②(2>3)&&(3>2)等于0;③(2>3)||(3>2)等于1。3.6標(biāo)準(zhǔn)函數(shù)

函數(shù)調(diào)用通過函數(shù)名進行,以實際數(shù)據(jù)(實參)代替函數(shù)中的參數(shù),即函數(shù)名(實參)。數(shù)學(xué)函數(shù)包含在頭文件math.h中,用#include″math.h″指明。參數(shù)x為double,或float,或int型數(shù),函數(shù)值為double型。常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)有:①acos(x),求x的反余弦,x必須在-1~1的范圍內(nèi)。②asin(x),求x的反正弦,x必須在-1~1的范圍內(nèi)。3.1表達式基礎(chǔ)3.1.1表達式的組成1.運算符

運算符又稱操作符,是一個符號,它指示在一個或多個操作數(shù)上完成某種運算操作或動作。

C語言中,除了輸入、輸出及程序流程控制操作以外的所有基本操作都作為運算處理。如,賦值運算符“=”、逗號運算符“,”、括號運算符“()”。①算術(shù)運算符有+、—、*、/、%、++、--②關(guān)系運算符有<、<=、==、!=、>、>=③邏輯運算符有!、&&、||④位運算符有<<、>>、~、|、^、&⑤賦值運算符有=、+=、-=、*=、/=、%=⑥條件運算符有?:⑦逗號運算符有,⑧指針運算符有*、&⑨求字節(jié)數(shù)運算符有sizeof10強制類型轉(zhuǎn)換運算符有(類型)11其它運算符有.、→、()、[]等2.操作數(shù)

操作數(shù)是運算符的操作對象,可以是常量、變量、函數(shù)與表達式。常量、變量、函數(shù)本身就是簡單表達式,從一般意義上講,C語言中所有操作數(shù)都是表達式。復(fù)雜表達式由運算符連接簡單表達式形成。3.1.2表達式的書寫

C語言的表達式雖然來源于數(shù)學(xué)表達式,是數(shù)學(xué)表達式在計算機中的表示,但在書寫時應(yīng)該注意遵循C語言表達式書寫的原則:(1)C語言的表達式只能采用線性的形式書寫。例如:①應(yīng)寫成1/3+i+j*j*j。②應(yīng)寫成(a+b)/(c+d)*e+f。(2)C語言的表達式只能使用C語言中合法的運算符和操作數(shù),對有些操作必須調(diào)用庫函數(shù)完成,而且運算符不能省略。例如:①πr2應(yīng)寫成3.14159*r*r。②應(yīng)寫成0.5*a*b*sin(alph)。③|x-y|應(yīng)寫成fabs(x-y)。④y+2X

應(yīng)寫成y+pow(2,x)。3.1.3表達式的分類

C語言表達式種類很多,有多種分類方法。我們一般依據(jù)運算的特征將表達式分為:①算術(shù)表達式,如a+b*2.0-3.0/5.0。②關(guān)系表達式,如x>=y,關(guān)系表達式可以認(rèn)為是邏輯表達式的特殊情況。③邏輯表達式,如(x>=2)&&(x<=8)。④賦值表達式,如a=b=c=1。⑤條件表達式,如(a>b)?a:b。⑥逗號表達式,如a=2,b=a*a,c=sqrt(b)。3.1.4表達式的計算1.運算符優(yōu)先級C語言將運算符的優(yōu)先級劃分為15級,初等運算()、[]、→、.優(yōu)先級最高,單目運算!、~、++、--、-、(類型)、*、&、sizeof優(yōu)先級次高,算術(shù)運算+、-、*、/、%再次之,然后是關(guān)系運算<、<=、==、!=、>、>=,再然后是邏輯運算&&、||,條件運算式?:,賦值運算=、+=、-=、*=、/=、%=,逗號運算優(yōu)先級最低,位運算優(yōu)先級比較分散。2.運算符的結(jié)合性

運算符的結(jié)合性是指,優(yōu)先級相同的運算從左到右進行(左結(jié)合性)還是從右至左進行(右結(jié)合性),左結(jié)合性是人們習(xí)慣的計算順序。

C語言中,只有單目運算(!、~、++、--、-、*、&)、條件運算(?:)、賦值運算(=、+=、-=、*=、/=、%=)的結(jié)合性是右結(jié)合,其余運算為左結(jié)合。3.類型轉(zhuǎn)換一般講相應(yīng)的運算只有相應(yīng)類型的數(shù)據(jù)才能進行,不同類型數(shù)據(jù)進行運算時,要進行類型轉(zhuǎn)換。類型轉(zhuǎn)換有自動轉(zhuǎn)換(又稱隱含轉(zhuǎn)換)與強制轉(zhuǎn)換兩種方式。

(1)自動轉(zhuǎn)換。自動轉(zhuǎn)換由系統(tǒng)自動完成,轉(zhuǎn)換的規(guī)則如圖3-1所示。Intusignedlongdouble↑↑short,charfloat圖3-1

縱向箭頭方向表示必定要進行的轉(zhuǎn)換,short型、char型數(shù)據(jù)必定先轉(zhuǎn)換成int型,float型數(shù)據(jù)必定先轉(zhuǎn)換成double型,再進行運算。橫向箭頭方向表示類型自動轉(zhuǎn)換的方向。由低向高轉(zhuǎn)換,int型最低,double型最高。int型與usingned型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成unsigned;int型與long型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成long型;int型與double型數(shù)據(jù)進行運算,int型轉(zhuǎn)換成double型。其它類推。這種轉(zhuǎn)換是一種保值映射,在轉(zhuǎn)換中數(shù)據(jù)的精度不受損失。(2)強制轉(zhuǎn)換。強制類型轉(zhuǎn)換通過類型轉(zhuǎn)換運算進行。格式:(類型名)(表達式)將表達式的類型強制轉(zhuǎn)換成類型名指定的類型。如:floatx,y;

(int)(x+y)將表達式x+y的值強制轉(zhuǎn)換成整型強制類型轉(zhuǎn)換在將高類型轉(zhuǎn)換為低類型時,數(shù)據(jù)精度受損,是一種不安全的轉(zhuǎn)換。強制類型轉(zhuǎn)換是暫時性的,一次性的,并不永久改變所轉(zhuǎn)換表達式的類型。如:inta;

(double)a為雙精度,a依然為整型量。

例3–1表達式計算。(1)floatx=2.5,y=4.7;inta=7;計算x+a%3*(int)(x+y)%2/4⑦①④③②⑤⑥①a%3等于1。②x+y等于7.2。③(int)(x+y)等于7。④a%3*(int)(x+y)等于7。⑤a%3*(int)(x+y)%2等于1。⑥a%3*(int)(x+y)%2/4等于0。⑦x+a%3*(int)(x+y)%2/4等于2.5+0,結(jié)果為2.5。

第二項將由整型自動轉(zhuǎn)換為雙精度型進行運算,計算結(jié)果為雙精度型。(2)inta=2,b=3;floatx=3.5,y=2.5;計算(float)(a+b)/2+(int)x%(int)y②①③⑦④⑥⑤①a+b等于5。②(float)(a+b)等于5.0,強制轉(zhuǎn)換成float型。③(float)(a+b)/2等于5.0/2.0,結(jié)果為2.5。④(int)x等于3,強制轉(zhuǎn)換成int型。⑤(int)y等于2,強制轉(zhuǎn)換成int型。⑥(int)x%(int)y等于1。⑦(float)(a+b)/2+(int)x%(int)y等于2.5+1.0,結(jié)果為3.5(雙精度型)。(3)inti=3;floatf=1.0;doubled=2.3;計算10+′a′+i*f-d①③②④①′a′轉(zhuǎn)換成97,10+′a′等于107。②i,f轉(zhuǎn)換成雙精度型,i*f等于3.0。③107轉(zhuǎn)換成雙精度型,10+′a′+i*f等于110.0。④10+′a′+i*f-d等于107.7。3.2算術(shù)表達式1.自增運算

自增運算符:++

自增運算是單目運算,操作數(shù)只能是整型變量,有前置、后置兩種方式:++i,在使用i之前,先使i的值增加1,俗稱先增后用。

i++,先使用i的值,然后使i的值增加1,俗稱先用后增。如:i=1999;j=++i;/*先將i的值增1,變?yōu)?000,后使用。j的值也為2000*/j=i++;/*先使用,j的值為1999。后增,將i的值增1,變?yōu)?000*/

自增運算優(yōu)先級處于第2級,結(jié)合自右向左。

2.自減運算

自減運算符:--

自減運算與自增運算一樣也是單目運算,操作數(shù)也只能是整型變量。同樣有前置、后置兩種方式:--i,在使用i之前,先使i的值減1,俗稱先減后用。

i--,先使用i的值,然后使i的值減1,俗稱先用后減。如:i=2000;j=--i;/*先減,將i的值減1,變?yōu)?999。后使用,j的值也為1999*/j=i--;/*先使用,j的值為2000。后減,將i的值減1,i的值變?yōu)?999*/自減運算的優(yōu)先級、結(jié)合性同自增運算。

請?zhí)貏e注意:(1)自增、自減運算只能用于整型變量,不能用于常量或表達式。

(2)自增、自減運算比等價的賦值語句生成的目標(biāo)代碼更高效。

(3)該運算常用于循環(huán)語句中,使循環(huán)控制變量自動加、減1,或用于指針變量,使指針指向下一個或上一個地址。

(4)表達式中包含有自增、自減運算時,容易出錯,務(wù)請小心。如:i=1;

(++i)+(++i)+(++i)的值為多少呢?有的計算出9(=2+3+4),其實這是錯誤的。計算時先對整個表達式掃描,i先自增3次,由1→2→3→4,如此計算結(jié)果為4+4+4,等于12。(i++)+(i++)+(i++)的值又是多少呢?類似上面分析,應(yīng)為3,當(dāng)然表達式計算完成后i的值同樣改變?yōu)?。3.運算符的組合問題

C語言的運算符一般為一個字符,有的由兩個字符組成,在表達式中出現(xiàn)多個字符時如何組合呢?C編譯系統(tǒng)在處理時原則上盡可能自左而右將若干字符組合成一個運算符,標(biāo)識符、關(guān)鍵字也按同樣的原則進行處理。如i+++j,解釋為(i++)+j,非i+(++j)。如要表示i+(++j),必須加括號。例3–2

自增自減運算。/*程序3-2,自增自減運算*/#include″stdio.h″main(){inti,j;i=j=5;printf(″i++=%d,j--=%d\n″,i++,j--);printf(″++i=%d,--j=%d\n″,++i,--j);printf(″i++=%d,j--=%d\n″,i++,j--);printf(″++i=%d,--j=%d\n″,++i,--j);printf(″i=%d,j=%d\n″,i,j);}運行結(jié)果:i++=5,j--=5++i=7,--j=3i++=7,j--=3++i=9,--j=1i=9,j=13.3賦值表達式3.3.1賦值運算

賦值運算符:=

賦值運算是雙目運算,一個操作數(shù)為變量,一個操作數(shù)為表達式。賦值運算符的右邊是表達式,左邊是變量。賦值運算時先計算右邊表達式的值,然后將右邊表達式的值賦給左邊變量,即送給左邊變量對應(yīng)的存儲單元,并以此作為整個賦值表達式的值。

如:inti;i=3+5%2;/*先計算3+5%2,得到4,然后將4賦給i*/。賦值運算的優(yōu)先級為第14級,次低,結(jié)合自右向左。賦值運算中的表達式操作數(shù)最簡單的形式是一個常量,這時讓變量得到一個初值。如:inti;floatx;charch;i=100;x=12.345;ch=′A′;

賦值運算中表達式操作數(shù)又可以是賦值表達式,如此可輾轉(zhuǎn)賦值。如:intx,y,z;x=y=z=0.0;/*相當(dāng)于x=(y=(z=0.0)),x、y、z都得到值0*/③②①3.3.2賦值類型轉(zhuǎn)換

(1)將實型數(shù)據(jù)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。如:inti;i=1.23;/*結(jié)果i的值為1*/(2)將整型數(shù)據(jù)賦給單、雙精度型變量時,數(shù)值大小不變,但以浮點形式存儲到變量中。(3)將字符型數(shù)據(jù)賦給整型變量時,由于字符數(shù)據(jù)只占一個字節(jié),而整型變量為兩個字節(jié),將字符的數(shù)據(jù)放整型變量的低8位,而對整型變量的高8位進行擴充。

(4)將基本整型數(shù)據(jù)賦給長整型變量時,基本整型數(shù)據(jù)放長整型變量低16位,高16位用符號位擴充。反之將長整型數(shù)據(jù)賦給整型變量時,只需將長整型數(shù)據(jù)的低16位原封不動送整型變量中。例如:①inti=-1;longintj;j=i;i的二進制形式:1111111111111111j的二進制形式:11111111111111111111111111111111②longinti=-1;intj;j=i;i的二進制形式:11111111111111111111111111111111j的二進制形式:1111111111111111(5)將無符號整型數(shù)據(jù)賦給長整型變量時,不存在符號擴展的問題,只需將高位補0即可。將無符號整型數(shù)據(jù)賦給一個占字節(jié)數(shù)相同的整型變量時,將無符號整型數(shù)據(jù)原樣送整型變量中,并將最高位當(dāng)作符號位,如果數(shù)據(jù)超出相應(yīng)的整型范圍,將產(chǎn)生數(shù)據(jù)錯誤。如果將整型數(shù)據(jù)賦給占字節(jié)數(shù)相同的無符號整型變量,也是原樣照賦,最高位作數(shù)值處理。例如:①unsignedinti=65535;intj;j=i;/*j的值為-1*/②inti=-1;unsignedintj;j=i;/*i的值為65535*/

3.3.3復(fù)合賦值運算

在基本賦值運算符“=”之前加上任一雙目算術(shù)運算符及位運算符可構(gòu)成復(fù)合賦值運算符,又稱帶運算的賦值運算符。算術(shù)復(fù)合賦值運算符:+=、-=、*=、/=、%=

位復(fù)合賦值運算符:&=、|=、^=、>>=、<<=

一般形式:變量☆=表達式等價于:變量=變量☆表達式☆代表任一雙目算術(shù)運算符或位運算符。復(fù)合賦值運算先進行所帶運算,再進行賦值運算。復(fù)合賦值運算的優(yōu)先級同賦值運算。(1)inta=3;a+=2等價于a=a+2(2)floatx=1.2,y=2.1;y*=x+3.4等價于y=y*(x+3.4)(3)inta=1,b=2;b/=a+=1,等價于b=b/(a=a+1)例3–3

賦值運算。/*程序3-3,賦值運算*/#include″stdio.h″main(){inti,j;floatx,y;i=j=1;x=y=1.1;printf(″i=%d,j=%d\n″,i,j);x=i+j;y+=1;printf(″x=%4.2f,y=%4.2f\n″,x,y);i=i+++j;x=2*x+y;printf(″i=%d,x=%4.2f\n″,i,x);}運行結(jié)果:i=1,j=1x=2.00,y=2.10i=2,x=6.103.4邏輯表達式3.4.1關(guān)系表達式

關(guān)系表達式是邏輯表達式中的一種特殊情況,關(guān)系表達式由關(guān)系運算符和操作數(shù)組成,關(guān)系運算用于完成數(shù)的比較運算。關(guān)系運算有<、<=、==、!=、>、>=,<、<=、>、>=的優(yōu)先級相同,==、!=的優(yōu)先級相同,前者的優(yōu)先級高于后者。關(guān)系運算符的優(yōu)先級低于算術(shù)運算,高于邏輯運算&&、||,也高于賦值運算。

邏輯表達式由邏輯運算符和關(guān)系表達式或邏輯量組成,邏輯表達式用于程序設(shè)計中的條件描述。

C語言有!、&&、||等三種邏輯運算。!運算的優(yōu)先級高于算術(shù)運算,&&運算高于||運算,&&、||運算低于關(guān)系運算,高于賦值運算。3.4.2邏輯表達式&&和||是一種短路運算。所謂短路運算,是指在計算的過程中,只要表達式的值能確定,便不再計算下去

溫馨提示

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

最新文檔

評論

0/150

提交評論