(中職)編程語言基礎(chǔ)-C++模塊3教學課件_第1頁
(中職)編程語言基礎(chǔ)-C++模塊3教學課件_第2頁
(中職)編程語言基礎(chǔ)-C++模塊3教學課件_第3頁
(中職)編程語言基礎(chǔ)-C++模塊3教學課件_第4頁
(中職)編程語言基礎(chǔ)-C++模塊3教學課件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、YCF正版可修改PPT(中職)編程語言基礎(chǔ)-C+模塊3教學課件模塊3 運算符和表達式任務(wù)1 運算符任務(wù)2 運算符的優(yōu)先級與結(jié)合性任務(wù)3 表達式返回任務(wù)1 運算符C+的運算符十分豐富,按照運算符要求操作數(shù)個數(shù)的多少,可把C+運算符分為單目(或一元)運算符、雙目(或二元)運算符和三目(或三元)運算符三類。單日運算符一般位于操作數(shù)的前面,如對x取負為-x;雙日運算符一般位于兩個操作數(shù)之間,如兩個數(shù)a和b相加表示為a+從三目運算符只有一個,即為條件運算符,它含有兩個字符,分別把三個操作數(shù)分開。一個運算符可能是一個字符,也可能由兩個或三個字符組成,還有的是一些C+保留字。如賦值號(=)就是一個字符,不等

2、于號(!=)就是兩個字符,左移賦值號(=)就是三個字符,測類型長度運算符(sizeof)就是一個保留字。下一頁返回任務(wù)1 運算符每一種運算符都具有一定的優(yōu)先級,用來決定它在表達式中的運算次序。一個表達式中通常有多個運算符,對它們進行運算的次序通常與每一個運算符從左到右出現(xiàn)的次序相一致,但若它的下一個(即右邊一個)運算符的優(yōu)先級較高,則下一個運算符應(yīng)先被計算。如當計算表達式a+b*(c-d)/e時,則每個運算符的運算次序依次為:-,*,/,+。 對于同一優(yōu)先級的運算符,當在同一個表達式的計算過程中相鄰出現(xiàn)時,可能是按照從左到右的次序進行,也可能是按照從右到左的次序進行,這要看運算符的結(jié)合性。如加

3、和減上一頁下一頁返回任務(wù)1 運算符運算為同一優(yōu)先級,它們的結(jié)合性是從左到右,即當計算a+b-c+d時,先做最左邊的加法,再做中間的減法,最后做右邊的加法;又如各種賦值操作是屬于同一優(yōu)先級,但結(jié)合性是從右到左,即當計算a=b=c時,先做右邊的賦值,使c的值賦給b,再做左邊的賦值,使b的值賦給a.表3-1列出了在C+語言中定義的全部運算符,其中優(yōu)先級數(shù)字從小到大對應(yīng)的優(yōu)先級別為從高到低。上一頁下一頁返回任務(wù)1 運算符3.1.1 算術(shù)運算符 C+語言中的算術(shù)運算符包括基本算術(shù)運算符和增1,減1運算符 1.基本算術(shù)運算符 一元運算符:+(取正)、一(取負)。 二元運算符:+(加)、一(減)、x(乘)、

4、/(除)、%(取余)。 其中“%”運算符要求它的兩個操作數(shù)必須是整數(shù)或字符型數(shù)據(jù),其優(yōu)先級與結(jié)合性和“/”運算符相同。求兩個數(shù)的余數(shù)的表達式如下: 操作數(shù)1%操作數(shù)2上一頁下一頁返回任務(wù)1 運算符 其計算結(jié)果是操作數(shù)1被操作數(shù)2除的余數(shù),即余數(shù)=操作數(shù)1一操作數(shù)2整商(整商為操作數(shù)1除以操作數(shù)2所得的整數(shù)商)。 例如:9%4 /結(jié)果是1 對于“/”運算符,當它的兩個操作數(shù)都是整數(shù)時,其計算結(jié)果應(yīng)是除法運算后所得的商的整數(shù)部分。例如:7/2的結(jié)果是3 .上一頁下一頁返回任務(wù)1 運算符 2.增1、減1運算符 增1,減1運算符都是一元運算符,這兩個運算符都有前置和后置兩種形式。前置形式是指運算符在操

5、作數(shù)的前面,后置是指運算符在操作數(shù)的后面。 例如:int i =2,j =4; i+; /+后青經(jīng)討計算后:表達式值為2,i值為3 -j; /一前青經(jīng)討計算后:表達式值為-,I值為3上一頁下一頁返回任務(wù)1 運算符 前置形式是先計算操作數(shù)的值(增1或減1),后把操作數(shù)的值作為表達式的結(jié)果。后置形式是先將操作數(shù)的值作為表達式的結(jié)果,然后把操作數(shù)的值增1或減1. 在進行算術(shù)運算時,還需注意計算中的溢出問題。在計算機中每種基本數(shù)據(jù)類型都有一定的取值范圍。對于實數(shù),如果運算結(jié)果超出范圍,程序?qū)⒈划惓V兄?另外,整數(shù)或?qū)崝?shù)被零除也會導致程序異常中止。上一頁下一頁返回任務(wù)1 運算符3. 1 .2 關(guān)系運算符

6、 關(guān)系運算符是用來比較兩個數(shù)據(jù)大小的,其操作結(jié)果只有兩種:成立或不成立。如果成立,則結(jié)果為邏輯值“真”,用1來表示;如果不成立,則結(jié)果為邏輯值“假”,用0來表示。由關(guān)系運算符連接而成的表達式稱為關(guān)系表達式。 關(guān)系運算符有:(小于)、(大于)、=(大于或等于)、= (等于)、!=(不等于)。上一頁下一頁返回任務(wù)1 運算符 在使用關(guān)系運算符時要注意以下兩點。 (1)當關(guān)系運算符用于字符比較時,是按該字符的ASCII值的大小進行比較; (2)使用關(guān)系操作時,要注意它的優(yōu)先級:算術(shù)運算符優(yōu)先于關(guān)系運算符;、=優(yōu)先于=、!=;、=同級;=、!=也是同級,它們的結(jié)合性自左向右.上一頁下一頁返回任務(wù)1 運算

7、符例如:設(shè)有如下變量定義:char c1=a,c2=A;int n1=65,n2=97;float f1=0.3e1,f2=3.0001;則c1c2的值為1;c1n1的值為1;f1=f2的值為0;c2=n1!=f2的值為1.即先操作c2=n1,其結(jié)果為0,再操作0!=f2,值為1.上一頁下一頁返回任務(wù)1 運算符3.1.3 邏輯運算符一元運算符!(邏輯求反):若其操作數(shù)為0(false),運算結(jié)果為ture(1),否則為false(0)二元運算符&(邏輯與):只要兩個操作數(shù)中有一個為0 ( false ),運算結(jié)果就為false,否則為true ( 1)|(邏輯或):只要兩個操作數(shù)中有一個不為0

8、 (flase),運算結(jié)果為true(1),否則為false(0)表3-2為邏輯運算的真值表.上一頁下一頁返回任務(wù)1 運算符3. 1 .4 位運算符 位運算符是對其操作數(shù)按其二進制形式逐位進行運算,參與運算的操作數(shù)應(yīng)為整數(shù)。其中包括一元運算符一(按位求反)和二元運算符&(按位與),|(按位或)、(按位異或)、(右移位)。(1)按位求反():按位求反的作用是對一個二進制數(shù)的每一位求反。例如:計算024024 0000000000010100024 1111111111101011上一頁下一頁返回任務(wù)1 運算符(2)按位與(&):按位與操作的作用是將兩個操作數(shù)對應(yīng)的每一位分別進行邏輯與操作例如:計

9、算3 &5 3: 00000011 5:(&) 00000101 3&5: 00000001(3)按位或(|):按位或操作的作用是將兩個操作數(shù)對應(yīng)的每一位分別進行邏輯或操作例如:計算3|5 3: 00000011 5:(|) 00000101 3|5: 00000111上一頁下一頁返回任務(wù)1 運算符 (4)按位異或(八):按位異或操作的作用是將兩個操作數(shù)對應(yīng)的每一位進行異或,具體運算規(guī)則是:若對應(yīng)位值相同,則該位運算結(jié)果為0;否則為1 例如:計算071052 071: 00111001 052:() 00101010 071052: 00010011上一頁下一頁返回任務(wù)1 運算符(5)移位:移

10、位運算符左邊的操作數(shù)指定廠需要作移位操作的數(shù)。右邊的操作數(shù)指定廠需要移動的位數(shù),因而必須是一個整數(shù)表達式。 左移位“”是將左操作數(shù)的二進制值向右移動指定的位數(shù)。右移后,移出的低位舍棄。如果是無符號數(shù)則高位補0;如果是有符號數(shù),則高位補符號位或補o.例:表達式42的移位操作過程如圖3-2所示。結(jié)果為2 . 注意:移位運算的結(jié)果就是位運算表達式的值,參與運算的兩個操作數(shù)的值并沒有變化。移位運算可替代乘或除2或2的n次方運算上一頁下一頁返回任務(wù)1 運算符3. 1 .5 賦值運算符 賦值運算符是給變量或?qū)ο筚x值,分為基本賦值運算符和復(fù)合賦值運算符。最后進行賦值運算的表達式,稱為賦值表達式。 基本賦值操

11、作“=”是一種雙目運算符,作用是將右操作數(shù)的值傳遞給左操作數(shù)。它的一般形式為:= 特別要注意以下兩點。 (1)賦值運算符的左邊一定是變量,不能是常量。例如:3 = I;/錯誤 (2)賦值運算符的結(jié)合性是從右向左。例如:a=b=10;可看做a=(b=10),,即a和b的值都為10上一頁下一頁返回任務(wù)1 運算符3. 1 .6 條件運算符條件運算符“?:”是C+中唯一一個三目運算符,其使用格式為:?: ?: 當計算由條件運算符構(gòu)成的表達式時,首先計算,若其值非。則計算出的值,這個值就是整個表達式的值;若的值為0,則計算出的值,它就是整個表達式的值。如:(1)a=(xy? x:y) /若xy為真則把X

12、的值賦給a,否則把y的值賦給a(2)x? y=a+10:y=3*a-1 /若x非0,則把a+10的值賦給y,否則把3*a-1的值賦給y上一頁下一頁返回任務(wù)1 運算符3. 1 .7 逗號運算符 逗號運算符是一種順序運算符,對于分別用逗號分開的若干個表達式,每個逗號都稱為逗號運算符,合起來稱為逗號表達式。計算一個逗號表達式時,將按照每個子表達式從左到右出現(xiàn)的先后次序依次計算出它們的值,最后一個子表達式的值就是整個表達式的值。如x+ ,y +=x,z-;就是一個逗號表達式,它首先計算x+的值,該計算使x增1;接著計算Y+=x的值,該計算使Y增加了x的值;最后計算z-的值,使z減1,而z的原值則成為整

13、個表達式的值。上一頁下一頁返回任務(wù)1 運算符3. 1 .8 圓括號運算符 使用圓括號能夠改變運算的優(yōu)先級,使得括號內(nèi)的運算優(yōu)先進行,這與數(shù)學上的含義相同。 在C+語言中,運算符比較多,級別劃分得也比較細,往往不容易正確地記住每個運算符的優(yōu)先級,因此也就不容易把它們正確地使用在復(fù)雜的表達式中。為廠使表達式中每個運算符的運算次序按照希望的次序進行,使用圓括號進行限定,即使有時是多余的,也沒有關(guān)系,因為它能夠使裘認式亙清晰,提高程序的可讀性。如:(1) x 0&x o)&(x 3可能更清晰(2)couty? x:y)endl;上一頁下一頁返回任務(wù)1 運算符 在第二條語句中,若不使用括號是錯誤的,因為

14、和?:,所以不能把條件表達式作為一個整體看待。注意:在tout語句中,不是左移操作符,而是重新賦予廠把其后的一個數(shù)據(jù)項的值插人(即輸出)到屏幕輸出窗口的含義,雖然y? x:y時,先計算xy,再得到x或Y,為廠使計算次序更明確,可以把xy用圓括號括起來,即書寫為(xy)? x:y上一頁返回任務(wù)2 運算符的優(yōu)先級與結(jié)合性每個運算符都有自己的優(yōu)先級和結(jié)合性。當一個表達式中包含多個運算符時,要確定運算的結(jié)果必須首先確定運算的先后順序,即運算符的優(yōu)先級和結(jié)合性。C+中運算符的優(yōu)先級和結(jié)合性如表3-3所示。表中,同一行的運算符具有相同的優(yōu)先級,其優(yōu)先級按從上到下的順序遞減,如:圓括號運算符的優(yōu)先級最高,逗

15、號運算符的優(yōu)先級最低。當同一表達式中有多個優(yōu)先級相同的運算符時,則根據(jù)其結(jié)合性確定運算順序。返回任務(wù)3 表達式由運算符和操作數(shù)組成的字符序列稱為表達式,其日的是計算之后求得一個結(jié)果值操作數(shù)可以是常量、變量、函數(shù)和其它一些標識符。 在C+語言中表達式的種類很多,其分類方法也很多。按運算符的不同可將表達式分為:算術(shù)表達式、賦值表達式、關(guān)系表達式、邏輯表達式和逗號表達式。3. 3. 1算術(shù)表達式算術(shù)表達式是指用算術(shù)運算符、括號將常量、變量和函數(shù)等連接而成的一個有意義的式子如:(1+x)/(3*x),(2*x-3)*x+2)*x)-5,3.14*sqrt(r),b*b-4.0*a*c都是表達式下一頁返

16、回任務(wù)3 表達式 要注意以下兩方面的內(nèi)容。 (l)表達式中的括號不管有多少層,一律使用圓括號,如(X+(y-10) )/(a*a-b) . (2)在將一個數(shù)學上的運算式寫成對應(yīng)的C+的表達式時,要注意進行必要的轉(zhuǎn)換。 乘號不能省略。如:在數(shù)學上兩個量相乘可寫成xy,而寫成C+的運算式時必須寫成x*y,此處的乘號不能忘記。上一頁下一頁返回任務(wù)3 表達式 數(shù)學表達式中出現(xiàn)的數(shù)學運算函數(shù)要用C+提供的對應(yīng)的數(shù)學運算庫函數(shù)來代替。如:在數(shù)學上求一個數(shù)X的平方根,在C+中要寫成sqrt(x),此處的sqrt是C+提供的求一個數(shù)的平方根的庫函數(shù)。類似地,還提供有求絕對值、指數(shù)函數(shù)、對數(shù)函數(shù)和三角函數(shù)的庫函

17、數(shù),這些內(nèi)容在C語言中已有詳細介紹,在此不再贅述。要特別注意表達式中兩個整型數(shù)相除的情況。如:有一數(shù)學表達式為2/3 (f-32) ,要寫成對應(yīng)的C+的表達式時,如果只簡單地寫為2/3*(f-32)時,則該表達式的值永遠為0,因為式中的2和3都為整型常量,在計算2/3時按整型數(shù)據(jù)的除法運算,則結(jié)果為。,但結(jié)果。并不是我們所期望的運算結(jié)果。所以,正確的寫法應(yīng)是2.0/3.0*(f-32)。上一頁下一頁返回任務(wù)3 表達式3. 3. 2 關(guān)系表達式C+中提供廠6種關(guān)系運算符: (小于),(大于),=(大于等于),=(相等),!=(不相等). 上述6種運算符中的前4種和后兩種的級別分別相等,且前者的級

18、別高于后者,但所有這6種的級別都小于算術(shù)運算符。它們都是需要兩個運算數(shù)的雙日運算符,且它們的結(jié)合性都是從左向右的。 用關(guān)系運算符將兩個表達式連接起來,就是關(guān)系表達式。比如:3 9,s +f h,(3 +d) (7 +k) ,(3 5)(sg),l k,x =y都是合法的關(guān)系表達式。關(guān)系表達式是一種最簡單的邏輯表達式,其結(jié)果類型為布爾型,值只能是true或false上一頁下一頁返回任務(wù)3 表達式3. 3. 3 邏輯表達式由邏輯運算符將兩個表達式連接形成的式子稱為邏輯表達式。各種邏輯運算的“真值表”如表3-4所示。表中列出廠當操作數(shù)a和b的取值為不同組合時,各種邏輯運算的結(jié)果。對于參加邏輯運算的操

19、作數(shù),系統(tǒng)認為“非0”為真,0”為假。而邏輯表達式的結(jié)果只能為邏輯真(1)或邏輯假(0).上一頁下一頁返回任務(wù)3 表達式(1)C+中,在給出一個邏輯表達式的最終計算結(jié)果值時,用1表示真,用0表示假。但在進行邏輯運算的過程中,凡是遇到非零值時就當真值參加運算,遇到0值時就當假值參加運算。 如int a=10,h -15,c=14;則(a+6)&(hc)的值為1(真),因為表達式中邏輯運算符&左邊的部分(a+6)的值為16,是非0值,所以,C+就把該值當成真值進行下一步的運算。而bc的值也為真,最后兩個真值進行&運算,所以最終結(jié)果為1(真)。上一頁下一頁返回任務(wù)3 表達式(2)在邏輯表達式的求值過

20、程中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的值時才執(zhí)行該運算符。 a&b&c:只有a為真時,才需要判別b的值;只有a和b的值都為真時,才需要判別c的值;只要a為假,就不必判別b和c,因為此時已能確定整個邏輯表達式的值為假值;如果a為真,b為假,則不必判別c 如int i = 10;則表達式i&(i =0) &(+i)的值為0(假),該表達式運算結(jié)束后,變量i的值為0,而不是1。因為在運算完表達式的前半部分i&(i = 0)的值(i為0)后,整個邏輯表達式的值為0(假)已能確定,所以后半部分(+i)就不再運算,因此,變量i的值沒有進行自加運算。上一頁下一頁

21、返回任務(wù)3 表達式a|b|c:只要a為真,就不必判別b和c;只有a為假,才判別b;只有a和b都為假,才判別c. 如:int i=1,j;則表達式i+|i+|i+的值為1(真),運算結(jié)束后,變量i的值為2,而不是4。因為進行第一個i+運算時,其值為1(真),這時,整個邏輯表達式的值為真已能確定,所以就不再進行后面的計算,因此,變量只進行廠一次自加運算,其值為2 對于數(shù)學上的表示多個數(shù)據(jù)間進行比較的表達式,在C+中要拆寫成多個條件,并用邏輯運算符將其連接形成一個邏輯表達式,而不能直接照搬。上一頁下一頁返回任務(wù)3 表達式 如:在數(shù)學上,要表示一個變量a的值處于-1和-9之間時,可以用-9a-9&a-

22、1,而不能寫成-9a-1。因為,假設(shè)變量a當前的值為-5,它的值確實處在-1和-9之間,但在C+語言中求-9 a-1時,從左向右進行計算,先計算-9 a,得1(真),此時,該表達式可簡化為1-9&a-1的形式上一頁下一頁返回任務(wù)3 表達式3. 3. 4 賦值表達式由賦值運算符和操作數(shù)組成的字符序列稱為賦值表達式。賦值表達式要求賦值號(=)左邊必須是左值,其功能是用右值表達式的值修改左值。賦值表達式的計算順序是從右向左進行的,其值為左值表達式的值。例如:high=5*6;/表達式的值為high的值30high=low=0/相當干low=0,high=low,格個表達式的值為high的值0.rniox+=3*9/相當于 midx=midx+3*9上一頁下一頁返回任務(wù)3 表達式C+語言在使用廠復(fù)合賦值表達式后,使語句看起來非常簡練。說明以下兒點。(1)賦值表達式本身是左值,可以出現(xiàn)在賦值號(=)左邊。(x=s)=23+6; /x=5是左值,被修改29,29即為整個表達式的值x=y=z=0: /從右向左計算,先使z=0,然后再將z的值賦給y,最后將y的值賦給x (2)聲明語句中的符號(=)為初始化符號,盡管在書寫上與賦值號(=)一樣,但含義不同。上一頁下一頁返回任務(wù)3 表達式float rmliusl=5.

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論