表達式與操作符_第1頁
表達式與操作符_第2頁
表達式與操作符_第3頁
表達式與操作符_第4頁
表達式與操作符_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學1表達式與操作符5.1表達式和語句在C語言中,語句是程序功能的基本執(zhí)行單位,多個語句結(jié)合在一起可以完成一些特定的功能;而一個語句又由若干個表達式組成;此外,語句和表達式可以通過一定的手段來相互轉(zhuǎn)換。本節(jié)將討論表達式和語句的概念和使用。第1頁/共72頁5.1.1表達式表達式是C語句的主體。在C語言中,表達式由操作符和操作數(shù)組成。操作符可以是+、-、*、/或%一類的運算操作符,也可以是>、<或==之類的關(guān)系操作符,還可以是其他一些操作符。操作數(shù)是操作符的操作對象,可以是常量或變量。最簡單的表達式可以只含有一個操作數(shù),例如:73.1415926“hello,world”variable第2頁/共72頁5.1.1表達式根據(jù)表達式含有的操作符的個數(shù),可以把表達式分為簡單表達式和復雜表達式:簡單表達式是只含有一個操作符的表達式;復雜表達式含有兩個或兩個以上操作符。下面分析兩種表達式的含義和它們的執(zhí)行過程。1.簡單表達式簡單表達式由于只含有一個操作符,運行方式比較簡單。下面列舉了幾個簡單表達式,其中接觸到的操作符在后面幾節(jié)將詳細講解。c=2 /*表達式1*/4+25 /*表達式2*/ptr==NULL /*表達式3*/key>max /*表達式4*/fun(b) /*表達式5*/第3頁/共72頁5.1.1表達式2.復雜表達式在復雜表達式中,每一個操作符和它的操作數(shù)組成的表達式為復雜表達式的子表達式。例如:b=d+e;下列5個表達式都是復雜表達式,它們依次是上面的5個簡單表達式的復雜化版本。c=b+2 /*表達式1*/4+25*3 /*表達式2*/*ptr==length /*表達式3*/key+incre>max /*表達式4*/fun(7+5-3) /*表達式5*/第4頁/共72頁5.1.2語句語句是計算機運行C程序的基本執(zhí)行單元,一個程序是由一系列的語句組成。在C語言中,一條完整的語句由表達式和分號的。例如:/*表達式;*/var=2;其中的表達式部分可以是最簡單的表達式,也可以是很冗長的復雜表達式,還可以為空。最簡單的語句就是一條空語句,即只有一個分號,如下所示;第5頁/共72頁5.1.2語句這個語句雖然什么都沒有做,但是有時候在邏輯上卻需要這樣的空語句。例如,要求在一個數(shù)組里得到某個值的下標,程序如下所示:for(inti=0;i<max&&array[i]!=target;++i); /*功能已完整,無需執(zhí)行體*/上面是一個完整的for語句結(jié)構(gòu)。在功能上,只需要執(zhí)行循環(huán)判斷部分(i<max&&array[i]!=target;)就可以完成查找功能;但是,在程序結(jié)構(gòu)上,for結(jié)構(gòu)還需要一個循環(huán)體,因此這里需要一條空語句。關(guān)于for語句,在第5章將詳細討論。第6頁/共72頁5.1.3復合語句復合語句,也可以稱為程序塊,是包含在花括號({})內(nèi)的多個語句的集合。標準形式如下所示:{語句1;語句2;語句3;……}第7頁/共72頁5.1.3復合語句C語言的執(zhí)行都是逐條語句依次執(zhí)行的。但是為了實現(xiàn)一些復雜的功能,很多程序常常需要把幾條語句作為一個功能單元來執(zhí)行,這時就需要使用復合語句把多條語句綁定為一個整體。1.組成特殊語句結(jié)構(gòu)復合語句主要用在C語言的特殊語句中,比如if語句、for語句和while語句等,構(gòu)成這些語句的執(zhí)行體,以實現(xiàn)一些復雜的功能。例如,要執(zhí)行一個功能:當a大于b時,互換變量a和變量b的值;當a不大于b時,什么都不做。程序如下所示:01 /*當a大于b時,互換變量a和變量b的值*/02 if(a>b){ /*if語句*/03 c=a;04 a=b;05 b=c;06 }第8頁/共72頁5.1.3復合語句如果不使用花括號把三條操作語句聯(lián)合為復合語句,將無法實現(xiàn)正常的功能,例如:01 if(a>b)02 c=a;03 a=b;04 b=c;對齊代碼后,等效于:01 if(a>b)02 c=a;03 a=b;04 b=c;第9頁/共72頁5.1.3復合語句2.提高程序可讀性除了用在特殊語句內(nèi),復合還可以將一些完成單一功能的語句放在一個花括號中,以提高程序可讀性。3.嵌套使用復合語句還可以嵌套使用。第10頁/共72頁5.1.3C操作符操作符是C語言的重要組成,也是本章要討論的重點。C語言提供了豐富的操作符,以完成各種各樣的功能。C語言共有45個操作符,簡單地分類展示如下:后綴操作符(4個):()[].->算術(shù)操作符(7個):+-*/%++--符號操作符(2個):+-邏輯操作符(3個):!&&||第11頁/共72頁5.1.3C操作符關(guān)系操作符(6個):>>=<<===!=位操作符(6個):~>><<&^|條件操作符(1個):?:賦值操作符(11個):=*=/=%=+=-=<<=>>=&=^=|=逗號操作符(1個):,轉(zhuǎn)型操作符(1個):(數(shù)據(jù)類型名)即(int)、(char)等地址操作符(2個):*&求字節(jié)操作符(1個):sizeof()第12頁/共72頁5.1.3C操作符下面來討論如何區(qū)分既可作為運算操作符,也可以作為地址操作符的*。01 pro=a*b;02 b=*ptr;03 pro=a**ptr; /*兩個*中間以及兩邊的空格可以為隨意多個,也可以沒有*/第13頁/共72頁5.2賦值操作符與賦值表達式賦值操作符是C語言中最常用的操作符之一,其功能是為變量賦值。由賦值操作符所組成的表達式稱為賦值表達式。本節(jié)將先討論賦值操作符和賦值表達式的使用,在介紹左值和右值的概念,最后討論賦值表達式中常見的類型轉(zhuǎn)換的問題。第14頁/共72頁5.2.1賦值操作符賦值操作符是一個二元操作符,其組成的賦值表達式的標準形式由變量、賦值操作符和一個表達式組成,如下所示:變量=表達式;賦值表達式的作用,就是把等號右邊的表達式的值賦值給等號左邊的變量。其中,賦值操作符左邊的變量也稱為左值,右邊的表達式稱為右值。賦值表達式的值即為語句執(zhí)行后左值的值。第15頁/共72頁5.2.2賦值操作符的結(jié)合性

當多個賦值操作符存在于同一條語句中時,按照C標準的規(guī)定,將會按照從右到左的結(jié)合方式先執(zhí)行最右邊的賦值操作符,再依次向左執(zhí)行其余賦值操作符。例如:a=b=c=表達式;該語句會先執(zhí)行最右邊的賦值操作符,再執(zhí)行中間的,最后執(zhí)行左邊的,即等效于:a=(b=(c=表達式)); /*括號操作符的優(yōu)先級是最高的*/第16頁/共72頁5.2.3左值和右值在C語言中,左值和右值是十分重要的概念。并不是所有的值都是可以改變的,可以改變的值被稱為左值。之所以要稱為左值,還因為只有可以改變的值才能放在賦值操作符的左邊,即只有左值可以放在賦值操作符的左邊,也可以說放在賦值操作符左邊的都是左值。左值可以是變量,如下所示:intyear=2008;int型變量year被賦值為2008。左值也可以是部分表達式,如下:int*month;*month=2;第17頁/共72頁5.2.4賦值表達式中的類型轉(zhuǎn)換在賦值表達式中,當把一種類型的數(shù)據(jù)賦值給不同類型的變量時,編譯器會隱式地把該數(shù)據(jù)進行類型轉(zhuǎn)換,轉(zhuǎn)換為該變量的類型后才賦值。例如:intsmall=2008;longlongintlarge;large=small;第18頁/共72頁5.2.5類型轉(zhuǎn)換操作符類型轉(zhuǎn)換操作符是操作符中十分獨特的一個,由一個小括號及包含在小括號里的一個類型名稱組成,如下所示:(int)(longlongint)(float)類型轉(zhuǎn)換操作符也是一個一元操作符,只帶一個操作數(shù),使用時放在操作數(shù)的前面。它的作用是把操作數(shù)的值的數(shù)據(jù)類型改變?yōu)椴僮鞣械臄?shù)據(jù)類型。如下所示為類型轉(zhuǎn)換操作符的標準形式:(數(shù)據(jù)類型名)(表達式)第19頁/共72頁5.2.5類型轉(zhuǎn)換操作符下面是幾個使用類型轉(zhuǎn)換符的實例:inti=(int)3.11;floatf=(float)7;shortintv=(shortint)28;其中,double型常量3.11會轉(zhuǎn)換為整型(會丟失數(shù)據(jù))后賦值給int型變量i,int型變量7會轉(zhuǎn)換為float型(不會丟失數(shù)據(jù))后賦值給float型變量f,int型數(shù)據(jù)28將轉(zhuǎn)換為shortint型(不會丟失數(shù)據(jù))后賦值給shortint型變量v。當表達式不僅僅是一個變量或一個常量時,需要把表達式放在小括號內(nèi)。例如:m=(int)(3.7+2.5)這時,程序會對3.7和2.5的和類型轉(zhuǎn)換為int型。如果沒有括號,只是:m=(int)3.7+2.5第20頁/共72頁5.3運算操作符與運算表達式數(shù)值計算離不開運算操作符,都要依靠運算操作符將各種數(shù)值連接在一起來完成特定的數(shù)值計算。由運算操作符組成的表達式為運算表達式。本節(jié)將討論各種基本運算操作符和運算表達式的使用,同時還討論與它們密切相關(guān)的符號操作符,以及運算表達式中的優(yōu)先級、結(jié)合性和類型轉(zhuǎn)換的問題。第21頁/共72頁5.3.1運算操作符運算操作符共有五個,分別是加法操作符(+)、減法操作符(-)、乘法操作符(*)、除法操作符(/)和求余操作符(%)。它們均為二元操作符,即操作符前后都需要有一個操作數(shù)。第22頁/共72頁5.3.1運算操作符1.加法操作符加法操作符的功能即進行加法運算。例如:var=3+4+5+6+7;賦值操作符右側(cè)為一個復雜的加法表達式,程序?qū)⑾扔嬎?和4的和,再計算該和與5的和,再計算該和與6的和,再計算該和與7的和,最后將最終的和賦值給var。當然,操作數(shù)也可以是變量。例如:printf(“sum=%d”,a+b); /*變量a和b為加法操作符的兩個操作數(shù)*/第23頁/共72頁5.3.1運算操作符2.減法操作符減法操作符的功能即,進行減法運算。例如:diff=512–128;賦值操作符右側(cè)即為減法表達式,將計算512和128的差作為該表達式的值,最后賦值給變量diff。第24頁/共72頁5.3.1運算操作符3.乘法操作符乘法操作符的功能是將它的操作數(shù)進行乘法計算,得到的值作為乘法表達式的值。例如:area=length*width;賦值操作符右側(cè)即為一個乘法表達式,將計算變量length和變量width的乘積作為該子表達式的值,最后將該值賦值給area。第25頁/共72頁5.3.1運算操作符4.除法操作符除法操作符的功能是將它的操作數(shù)進行除法運算,將得到的值作為除法表達式的值。例如:rate=distance/time;賦值操作符右側(cè)為一個除法表達式,其功能是計算變量distance除以變量time的商,最后將該值賦給變量rate。第26頁/共72頁5.3.1運算操作符5.求余操作符求余操作符的功能是求其左側(cè)的操作數(shù)除以右側(cè)操作數(shù)的余數(shù)。例如:digit=number%10;賦值操作符右側(cè)為一個求余表達式,其作用為計算變量number除以10的余數(shù),即變量number的個位數(shù),最后將該值賦值給變量digit。第27頁/共72頁5.3.2符號操作符減法操作符(-)和加法操作符(+)不僅可以作為運算操作符,還可以作為符號操作符。1.負號操作符負號操作符是一元操作符,其作用是改變操作數(shù)的符號。它的操作數(shù)跟在操作符后面,可以是整型、浮點型或字符型的常量或變量。例如:-25-74.0-‘c’-a第28頁/共72頁5.3.2符號操作符2.正號操作符正號操作符與負號操作符的使用方法類似,也是一元操作符,其操作數(shù)也放在操作符后面,也可以是整型、浮點型或字符型的常量或變量。但是,正號操作符的用途沒有負號操作符廣,因為和數(shù)學意義上的正號意義,在一個數(shù)前面加上正號不會改變該數(shù)的值。例如:+(-25)+25+a第29頁/共72頁5.3.3優(yōu)先級與結(jié)合性操作符的優(yōu)先級是指操作符執(zhí)行的先后順序。當多個操作符共同存在于一個復雜表達式中時,需要按照一定的先后順序執(zhí)行;優(yōu)先級高的操作符會比優(yōu)先級低的操作符先被執(zhí)行。例如:result=15+7*12–7/4;第30頁/共72頁5.3.3優(yōu)先級與結(jié)合性下表總結(jié)了所有已接觸到的操作符的優(yōu)先級和結(jié)合性。其中優(yōu)先級從上到下依次降低。第31頁/共72頁5.3.4數(shù)值運算中的類型轉(zhuǎn)換

在運算表達式中,當不同類型的數(shù)值之間進行運算時,編譯器也會像在賦值表達式中那樣進行隱式的類型轉(zhuǎn)換。例如:area=4*7.5;其中,4為int型,7.5為double型。int型的4將先被轉(zhuǎn)換為double型再與double型的7.5相乘。第32頁/共72頁5.3.4數(shù)值運算中的類型轉(zhuǎn)換

數(shù)值運算中的類型轉(zhuǎn)換遵從以下規(guī)則:char型和short型數(shù)據(jù),不管是unsigned還是signed,在計算中都要先無條件轉(zhuǎn)換為int型,即使是兩個char型或short型數(shù)值相加。float型計算前會無條件轉(zhuǎn)換為double型數(shù)值,以增加精度。其余類型的數(shù)值計算時,都要轉(zhuǎn)換為數(shù)據(jù)類型級別較高的后再計算。第33頁/共72頁5.3.4數(shù)值運算中的類型轉(zhuǎn)換

數(shù)據(jù)類型級別是以能存儲的數(shù)值范圍來定義的,能儲存的數(shù)值范圍越大,數(shù)據(jù)類型級別越高。如下圖所示:第34頁/共72頁5.3.5復合的賦值操作符賦值操作符與上面介紹的五種基本運算操作符結(jié)合,可以組成復合的賦值操作符:+=,-=,*=,/=和%=。他們使用形式與賦值操作符相似,都是二元操作符,而且左側(cè)也只能為左值,右側(cè)為右值;但是功能上比賦值操作符復雜。1.+=該操作符由賦值操作符與加法操作符結(jié)合而成的,其使用形式為:左值+=右值;其作用為,將左值與右值相加的和賦給左值,等效于:左值=左值+右值;第35頁/共72頁5.3.5復合的賦值操作符2.-=該操作符由賦值操作符與減法操作符結(jié)合而成的,其使用形式為:左值-=右值;其作用為,將左值與右值相減的差賦給左值,等效于:左值=左值-右值;3.*=該操作符由賦值操作符與乘法操作符結(jié)合而成的,其使用形式為:左值*=右值;其作用為,將左值與右值相乘的積賦給左值,等效于:左值=左值*右值第36頁/共72頁5.3.5復合的賦值操作符4./=該操作符由賦值操作符與除法操作符結(jié)合而成的,其使用形式為:左值/=右值;其作用為,將左值與右值相除的商賦給左值,等效于:左值=左值/右值;5.%=該操作符由賦值操作符與求余操作符結(jié)合而成的,其使用形式為:左值%=右值;其作用為,將左值對右值求余的結(jié)果賦給左值,等效于:左值=左值%右值;第37頁/共72頁5.4自增、自減操作符為了簡化程序書寫,C語言中還定義了兩種操作符:自增操作符(++)和自減操作符(--)。這兩種操作符都是一元操作符,只帶一個操作數(shù);同時,這兩個操作符可以放在它們的操作數(shù)的左邊,也可以放在右邊,兩者的功能是不同的。本節(jié)將介紹自增操作符和自減操作符的語法和使用時需要注意的問題,同時還將討論貪婪法的內(nèi)容。第38頁/共72頁5.4.1自增操作符顧名思義,自增操作符就是使自己的值增加的操作符。準確地說,自增操作符的作用是將其唯一的操作數(shù)賦值為其自身值加1后的值。由于該操作數(shù)會被賦值,因此必須是左值,即要求其值是可以改變的。自增表達式的標準形式如下:左值++第39頁/共72頁5.4.2自減操作符自減操作符與自增操作符使用方法完全一樣,也為一元操作符。它可以放在其唯一的操作數(shù)(稱為前自減操作符)的前面,也可以放在操作數(shù)的后面(稱為后自減操作符)。自減操作符的作用是將其操作數(shù)減1后再賦值給本身。自減操作符也有前自減操作符和后自減操作符:前自減操作符是在執(zhí)行所在語句前自減1,而后自減是在執(zhí)行語句后自減1。第40頁/共72頁5.4.3優(yōu)先級與結(jié)合性自增操作符和自減操作符的優(yōu)先級與符號操作符相同。在上面的案例中,已經(jīng)接觸到它們的優(yōu)先級的使用,例如范例5-13中的第8行:y=--x+1;由于,自減操作符的級別最高,所以先執(zhí)行前自減的操作。但是需要注意的是,在第12行中:y=1+x--;第41頁/共72頁5.4.4詞法分析:貪婪法詞法分析是指編譯器把C程序中的字符處理為一個個C語言中的符號的過程。C語言中的操作符有單字符的(例如=、+、-),也有兩個字符的(例如++、--),還有更多字符的(例如類型轉(zhuǎn)換操作符)。由于,C語言允許兩個操作符之間可以沒有空格(例如v=+d,其中=+為兩個操作符),因此某些字符在一起可以組合成多種不同情況的操作符,例如:++bbb;第42頁/共72頁5.4.4詞法分析:貪婪法理論上,++除了可以視為前自增操作符,也可以視為兩個正號操作符,等效于:+(+bbb);例如:+++++++b; /*7個+*/按照貪婪法,分析的結(jié)果等效于:+++++++b;再進行語法分析,自增操作符與加法操作符結(jié)合性為從右到左,分析結(jié)果等效于:++(++(++(+b)));第43頁/共72頁5.4.5自增、自減操作符的副作用所謂自增操作符和自減操作符的副作用就是,它們在執(zhí)行它們所在語句之前或之后對操作數(shù)的自增和自減操作。由于這些操作與語句是在不同階段執(zhí)行的,在一些復雜的情況下,程序員常常因此會犯錯誤。甚至于在不同的編譯器中,這些語句的結(jié)果也是不盡相同的。在編程過程中,應當盡量消除這些副作用可能導致錯誤的隱患。第44頁/共72頁5.5關(guān)系操作符與關(guān)系表達式在前面的范例中,已經(jīng)接觸到很多關(guān)系操作符的例子。關(guān)系操作符在C語言中主要用于進行數(shù)值比較。由關(guān)系操作符組成的關(guān)系表達式通常用在程序中的控制選擇語句中。本節(jié)將討論關(guān)系操作符和關(guān)系表達式的使用,以及關(guān)系操作符的優(yōu)先級和結(jié)合性。第45頁/共72頁5.5.1使用關(guān)系操作符關(guān)系操作符包括小于操作符(<)、大于操作符(>)、小于等于操作符(<=)、大于等于操作符(>=)、等于操作符(==)和不等于操作符(!=)6種。使用關(guān)系操作符的標準方式如下:1.小于操作符(<)表達式1<表達式2該表達式為小于表達式,當表達式1的值小于表達式2的值時,為真;否則,為假。2.小于等于操作符(<=)表達式1<=表達式2該表達式為小于等于表達式,當表達式1的值小于等于表達式2的值時,為真;否則,為假。第46頁/共72頁5.5.1使用關(guān)系操作符3.大于操作符(>)表達式1>表達式2該表達式為大于表達式,當表達式1的值大于表達式2的值時,為真;否則,為假。4.大于等于操作符(>=)表達式1>=表達式2該表達式為大于表達式,當表達式1的值大于等于表達式2的值時,為真;否則,為假。5.等于操作符(==)表達式1==表達式2該表達式為等于表達式,當表達式1的值等于表達式2的值時,為真;否則,為假。第47頁/共72頁5.5.1使用關(guān)系操作符6.不等于操作符(!=)表達式1!=表達式2該表達式為不等于表達式,當表達式1的值不等于表達式2的值時,為真;否則,為假。關(guān)系表達式的計算是一個比較的過程,如果被比較的兩個值類型不同,必須先進行類型轉(zhuǎn)換。例如:4>4.312==‘f’第一個表達式中,int型4要轉(zhuǎn)換為double型后再比較;第二個表達式中,char型’f’要轉(zhuǎn)換為int型后再進行比較。范例5-17演示了各種關(guān)系操作符的使用。第48頁/共72頁5.5.2關(guān)系表達式的值雖然C99定義了_BOOL,但現(xiàn)在大部分編譯器并不支持這一類型,而即使_BOOL型也不是關(guān)系表達式的值類型。關(guān)系表達式值在C語言中實際上作為int型處理。同時,已經(jīng)知道非0的數(shù)值的布爾值為真,而為0的數(shù)值的布爾值為假;那么反來過,布爾值如何轉(zhuǎn)化為int型值?關(guān)系表達式的布爾值如何轉(zhuǎn)換為int型值?布爾值轉(zhuǎn)換為int型值,一般遵從以下規(guī)則:假0真1布爾值為真的關(guān)系表達式的int型值為1,布爾值為假的關(guān)系表達式的int型值為0。范例5-18驗證了關(guān)系表達式的值和它的數(shù)據(jù)類型。第49頁/共72頁5.5.3優(yōu)先級與結(jié)合性不同關(guān)系操作符的優(yōu)先級不同,其優(yōu)先級如下:較高優(yōu)先級:<、<=、>、>=(這4個優(yōu)先級相同);較低優(yōu)先級:==、!=(這2個優(yōu)先級相同)。相同優(yōu)先級的關(guān)系操作符的結(jié)合性為從左到右。關(guān)系運算符的優(yōu)先級比賦值運算符高,比運算操作符低,例如:m=1+2*3==4;第50頁/共72頁5.6邏輯操作符與邏輯表達式邏輯操作符包括邏輯與操作符(&&)、邏輯或操作符(||)和邏輯非操作符(!)三種,其功能是進行各種邏輯運算。含有邏輯操作符的表達式即為邏輯表達式。C語言中一些復雜功能的實現(xiàn)離不開邏輯表達式的使用。本節(jié)將討論邏輯操作符和邏輯表達式的使用,同時還討論了如何化簡邏輯表達式。第51頁/共72頁5.6.1使用邏輯操作符三種邏輯操作符的使用形式如下:1.邏輯與操作符邏輯與操作符是個二元操作符,其標準調(diào)用方式如下:表達式1&&表達式2該表達式為邏輯與表達式,其中表達式1和表達式2可以為任意表達式,其功能為將兩個表達式的布爾值做邏輯與運算。邏輯與運算規(guī)則如下:真&&真=真真&&假=假假&&真=假假&&假=假第52頁/共72頁5.6.1使用邏輯操作符2.邏輯或操作符邏輯或操作符也是二元操作符,其標準調(diào)用方式如下:表達式1||表達式2該表達式為邏輯或表達式,其中表達式1和表達式2也可以為任意表達式,其功能為將兩個表達式的布爾值做邏輯或運算。邏輯或運算規(guī)則如下:真||真=真真||假=真假|(zhì)|真=真假|(zhì)|假=假第53頁/共72頁5.6.1使用邏輯操作符3.邏輯非操作符邏輯非操作符為一元操作符,只帶一個操作數(shù),使用時操作符位于操作數(shù)前,調(diào)用形式如下:!表達式1該表達式為邏輯非表達式,其中表達式1和表達式2也可以為任意表達式,其功能為將兩個表達式的布爾值做邏輯非運算。邏輯非運算規(guī)則如下:!真=假!假=真第54頁/共72頁5.6.2邏輯表達式的值與關(guān)系表達式相同,雖然邏輯表達式在本書介紹中認為是布爾值,但C編譯器中將其處理為int型。如果邏輯表達式的布爾值為真,則其int型值為1;如果其布爾值為假,則其int型值為0。第55頁/共72頁5.6.3優(yōu)先級和結(jié)合性3個邏輯操作符的優(yōu)先級從高到低為:邏輯非操作符、邏輯與操作符和邏輯或操作符。結(jié)合性為從左到右。同時,邏輯非操作符的優(yōu)先級與符號操作符一致,比運算操作符高,更比關(guān)系操作符高;邏輯與操作符和邏輯或操作符的優(yōu)先級低于關(guān)系操作符,但高于賦值操作符。第56頁/共72頁5.6.4化簡邏輯表達式3個邏輯操作符組合使用時,可以得到多個功能一致但形式不同的邏輯表達式。使用簡單的邏輯表達式來代替復雜的表達式是提高程序邏輯性的一個重要方法。下面是兩組功能一樣的邏輯表達式:第一組表達式如下:!(a||b)!a&&!b第二組表達式如下:!(a&&b)!a||!b使用以上功能相同的兩組邏輯表達式可以對一些復雜的、邏輯不清的表達式進行簡化。第57頁/共72頁5.7逗號操作符與逗號表達式逗號操作符是C語言中很重要的輔助型操作符。逗號操作符所在的表達式稱為逗號表達式。在逗號表達式中,逗號操作符將若干個表達式連接在一起形成一個語句。本節(jié)將討論逗號操作符和逗號表達式的使用。第58頁/共72頁5.7.1使用逗號操作符逗號操作符是一個二元操作符,其標準使用形式如下:表達式1,表達式2該逗號表達式會以從左到右的順序先計算表達式1,再計算表達式2。逗號表達式的優(yōu)先級是所有操作符中最低的,因此可以將任意表達式直接作為逗號表達式的子表達式,且不會改變表達式的執(zhí)行順序和執(zhí)行邏輯。第59頁/共72頁5.7.2逗號表達式的值與其余表達式一樣,逗號表達式也有一個值,其值等于表達式中最后一個子表達式的值。即:表達式1,表達式2,表達式3……表達式n;上述表達式的值等于表達式n的值。范例5-22演示了逗號表達式的值及其使用方法。第60頁/共72頁5.8操作符優(yōu)先級和結(jié)合性優(yōu)先級和結(jié)合性是操作符使用中十分重要的知識,在前面的討論中已經(jīng)多次涉及。本節(jié)將總結(jié)C語言中所有操作符的優(yōu)先級和結(jié)合性,包括一些本章未介紹的操作符。此外,本節(jié)還介紹了兩種更好地使用表達式的方法。第61頁/共72頁5.8.1優(yōu)先級和結(jié)合性操作符的優(yōu)先級代表了它被執(zhí)行的優(yōu)先度。當一個復雜表達式里含有多個操作符時,一般情況下,首先會根據(jù)操作符的優(yōu)先級來決定操作符的執(zhí)行順序;但操作符的優(yōu)先級相同時,應該根據(jù)操作符的結(jié)合性來判斷執(zhí)行順序。第62頁/共72頁5.8.1優(yōu)先級和結(jié)合性右表是所有操作符優(yōu)先級和結(jié)合性的總結(jié)。第63頁/共72頁5.8.1優(yōu)先級和結(jié)合性1.前置操作符前置操作符都是一元操作符,其優(yōu)先級為2,為第二高。很容易理解將它們得結(jié)合性規(guī)定為從右到左的原因,例如:+-+a;-++b!sizeof(c)

溫馨提示

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

最新文檔

評論

0/150

提交評論