第三章運算符與表達式_第1頁
第三章運算符與表達式_第2頁
第三章運算符與表達式_第3頁
第三章運算符與表達式_第4頁
第三章運算符與表達式_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3 3章章 C+C+運算符與表達式運算符與表達式要點:要點: 本章介紹運算符及表達式的基本概念,詳細介本章介紹運算符及表達式的基本概念,詳細介紹紹C+的算術(shù)運算符、關(guān)系運算符、邏輯運算符的算術(shù)運算符、關(guān)系運算符、邏輯運算符及其由這些運算符構(gòu)成的表達式,介紹了及其由這些運算符構(gòu)成的表達式,介紹了C+特特有的自增自減運算符,還介紹了逗號運算符、位有的自增自減運算符,還介紹了逗號運算符、位運算符、賦值運算符等運算符、賦值運算符等重點內(nèi)容:重點內(nèi)容: 程序設(shè)計經(jīng)常涉及到的算術(shù)運算符、關(guān)系運算程序設(shè)計經(jīng)常涉及到的算術(shù)運算符、關(guān)系運算符、邏輯運算符的符號表示、優(yōu)先級及由這些運符、邏輯運算符的符號表示、

2、優(yōu)先級及由這些運算構(gòu)成的表達式算構(gòu)成的表達式一、運算符與表達式的基本概念一、運算符與表達式的基本概念1. 運算符運算符 程序設(shè)計就是對數(shù)據(jù)進行加工處理,也程序設(shè)計就是對數(shù)據(jù)進行加工處理,也就是對各種數(shù)據(jù)進行運算,這些就要有各就是對各種數(shù)據(jù)進行運算,這些就要有各種運算符。所謂運算符,就是程序設(shè)計語種運算符。所謂運算符,就是程序設(shè)計語言預(yù)定義好的符號,這些符號能夠完成某言預(yù)定義好的符號,這些符號能夠完成某種操作種操作一、運算符與表達式的基本概念一、運算符與表達式的基本概念2. 表達式表達式 數(shù)據(jù)運算必須建立完成某一操作的表達數(shù)據(jù)運算必須建立完成某一操作的表達式,所謂表達式,就是由運算符、操作數(shù)式,

3、所謂表達式,就是由運算符、操作數(shù)據(jù)和括號組成的完成某種運算功能的式子。據(jù)和括號組成的完成某種運算功能的式子。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式1 算術(shù)運算符及其優(yōu)先級算術(shù)運算符及其優(yōu)先級C+中很多的算術(shù)運算符,主要包括:中很多的算術(shù)運算符,主要包括:+、-、*、/、%,具體含義如下:,具體含義如下: (1)“+” 表示表示“加加”或或“正正”兩種運算符,當參加運兩種運算符,當參加運算的操作數(shù)只有一個時,如算的操作數(shù)只有一個時,如+18,則稱,則稱“+”為正為正號,正號稱為單目號,正號稱為單目(一元一元)運算符。當參加運算的運算符。當參加運算的操作數(shù)有兩個時,如操作數(shù)有兩個時,

4、如5+6,則稱,則稱“+”為加號,加為加號,加號號“+”為雙目(二元)運算符。為雙目(二元)運算符。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式(2) “-”表示表示“負負”或或“減減”兩種運算符。如兩種運算符。如-25中的中的“-”為負號,為負號,10-4中的中的“-”為減號。為減號。(3) “*”為乘號,如為乘號,如3*6。(4) “/”為除號,如為除號,如10/2。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式(5) “%”為取余運算符,也稱為取模運算符,就是取為取余運算符,也稱為取模運算符,就是取除法的余數(shù),它要求兩個操作數(shù)均為整型數(shù)據(jù)。除法的余數(shù),它要求兩個操作數(shù)均為整

5、型數(shù)據(jù)。如如8%3=2,11%5=1。對于算術(shù)運算符,優(yōu)先級如下:對于算術(shù)運算符,優(yōu)先級如下:“+”(正號)、(正號)、“-”(負號)運算符最高;(負號)運算符最高;“*”、“/”、“%”其其次;次;“+”(加號)、(加號)、“-”(減號)最低。跟數(shù)學(xué)(減號)最低。跟數(shù)學(xué)中的運算優(yōu)先級是一樣的。中的運算優(yōu)先級是一樣的。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式2 算術(shù)表達式算術(shù)表達式 用算術(shù)運算符將操作數(shù)連接起來的式子稱用算術(shù)運算符將操作數(shù)連接起來的式子稱為算術(shù)表達式。為算術(shù)表達式。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式例例3.1 分析程序的運算結(jié)果分析程序的運算結(jié)果#

6、includevoid main() int x,y,z; x=10,y=-15; z=x*2+y/3; x=x%3; y=y*(-2)%7;cout”x=”xendl; cout”y=”yendl; cout”z=”zendl; 二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式練習(xí):寫出下列程序的運行結(jié)果。練習(xí):寫出下列程序的運行結(jié)果。#includevoid main() int x,m,n; x=548; m=x%100; n=m%10; cout“m=“mt; cout“n=“nendl; 二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式 編一程序,從鍵盤中輸入一個數(shù)據(jù),判編一

7、程序,從鍵盤中輸入一個數(shù)據(jù),判斷能否被斷能否被7整除,如果能夠整除,則打印出整除,如果能夠整除,則打印出來,不能被整除,則打印來,不能被整除,則打印“NO”字。字。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式3自增、自減運算符 除了以上介紹的運算符之外,除了以上介紹的運算符之外,C+還有兩個算還有兩個算術(shù)運算符:術(shù)運算符:“+”(自增運算符),表示加(自增運算符),表示加1,“- -”(自減運算符),表示減(自減運算符),表示減1。自增、自減運算符。自增、自減運算符只能對變量有效,不能使用于常量或表達式。自只能對變量有效,不能使用于常量或表達式。自增、自減運算符可以放在變量的前面或后面

8、,都增、自減運算符可以放在變量的前面或后面,都表示對變量的值加表示對變量的值加1或減或減1,如,如i+,相當于,相當于i=i+1,-m相當于相當于m=m-1。那么,。那么,i+與與+i有什么區(qū)別呢?有什么區(qū)別呢?先看兩個簡單的例子。先看兩個簡單的例子。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式例例3.2#includevoid main() int i,j,x,y; i=5,j=8; x=i+; y=+j; cout”i=”iendl; cout”j=”jendl; cout”x=”xendl; cout”y=”yendl;二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式例例3.

9、3#includevoid main() int i,j,m,n; i=20,j=30; m=-i, n=j-;cout”i=”iendl;cout”j=”jendl;cout”m=”mendl;cout”n=”nendl; 二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式 從例從例3.2,可以看出,對于表達式,可以看出,對于表達式x=i+,首先,首先把把i的值賦給的值賦給x,然后,然后i的值加的值加1;對于;對于y=+j,則是,則是先把先把j的值加的值加1,再賦給,再賦給y。同樣,例。同樣,例3.3讀者可以讀者可以自己分析。由此可知,自己分析。由此可知,C+自增、自減運算符放自增、自減運

10、算符放在變量前面與后面,運算方式是不一樣的。歸納在變量前面與后面,運算方式是不一樣的。歸納如下:如下:二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式 (1) +i、-i (先使先使i的值加的值加1或減或減1,再使用,再使用i 的值的值) (2) i+、i- (先使用先使用i的值,再使的值,再使i 的值加的值加1或減或減1)注意注意: (1) +和和-的結(jié)合方向是從右向左結(jié)合,與大家熟知的算術(shù)的結(jié)合方向是從右向左結(jié)合,與大家熟知的算術(shù)運算符的結(jié)合方向相反。運算符的結(jié)合方向相反。 (2) +和和-的優(yōu)先級比算術(shù)運算符的優(yōu)先級高。的優(yōu)先級比算術(shù)運算符的優(yōu)先級高。 (3) 在寫程序時,盡量避免二

11、義性,如在寫程序時,盡量避免二義性,如i+j,到底是,到底是(i+)+j,還是還是i+(+j)呢?呢?C+系統(tǒng)按系統(tǒng)按(i+)+j來處理,因此,我們在來處理,因此,我們在寫程序時,盡量使用括號。寫程序時,盡量使用括號。二、算述運算符與算術(shù)表達式二、算述運算符與算術(shù)表達式練習(xí):寫出下列程序的運行結(jié)果練習(xí):寫出下列程序的運行結(jié)果#includevoid main() int x=10,y=30,t; x+; t=-y; cout“x=“x+endl;cout“y=“yendl;cout“t=“tendl; cout“x=“x、=、y、x!=5、m= =n等。等。 關(guān)系表達式的值只有兩個:關(guān)系表達式

12、的值只有兩個:1和和0,1表示邏輯真,表示邏輯真,即該關(guān)系表達式成立,如即該關(guān)系表達式成立,如53;0表示邏輯假,即表示邏輯假,即該關(guān)系表達式不成立,如該關(guān)系表達式不成立,如9=4。三、關(guān)系運算符與關(guān)系表達式三、關(guān)系運算符與關(guān)系表達式例例3.4 #includevoid main()int x,y,z; x=105; y=384; coutxtytzy)& (y10)、(、(x10)等,邏輯表達式的等,邏輯表達式的值也是一個邏輯值,也就是只有真和假,即值也是一個邏輯值,也就是只有真和假,即1和和0。四、邏輯運算符與邏輯表達式四、邏輯運算符與邏輯表達式3 邏輯運算符的運算規(guī)則 對于邏輯表

13、達式對于邏輯表達式a&b,什么時候是真,什么,什么時候是真,什么時候是假呢?只有當時候是假呢?只有當a、b 同時為真時,同時為真時,a&b 的的值為真,其它的情況值為真,其它的情況a&b的值為假。的值為假。 對于邏輯表達式對于邏輯表達式a|b,只要,只要a、b 中有一個為真,中有一個為真,則則a|b 的值為真,只有當?shù)闹禐檎?,只有當a和和b的值都為假時,邏的值都為假時,邏輯表達式的值為假。輯表達式的值為假。 非運算就是,當非運算就是,當a為真時,為真時,!a為假,反過來,為假,反過來,當當a為假時,為假時,!a的值為真。的值為真。五、逗號運算符與逗號表達式五、逗號運算符

14、與逗號表達式 C+把逗號(把逗號(“,”)也作為運算符,)也作為運算符,可以用它將表達式連接起來,如:可以用它將表達式連接起來,如:x=4,x=5,6+8,用逗號將兩個以上的表達式連,用逗號將兩個以上的表達式連接起來構(gòu)成的表達式稱為逗號表達式。接起來構(gòu)成的表達式稱為逗號表達式。五、逗號運算符與逗號表達式五、逗號運算符與逗號表達式1. 逗號表達式的格式逗號表達式的一般形式為:逗號表達式的一般形式為:表達式表達式1,表達式,表達式2,.表達式表達式n逗號表達式的求解過程是:先求解表達式逗號表達式的求解過程是:先求解表達式1,再求,再求解表達式解表達式2,再求解表達式,再求解表達式3,.最后求解表達

15、最后求解表達式式n。整個逗號表達式的值為最后一個表達式的。整個逗號表達式的值為最后一個表達式的值。如值。如x=5,x+6,x+8,x+4表達式的值為表達式的值為9。逗。逗號運算符的優(yōu)先級最低。號運算符的優(yōu)先級最低。五、逗號運算符與逗號表達式五、逗號運算符與逗號表達式例:例:#includevoid main() int x,y,z; x=10; y=(x+12,x=x+5,x*3); z=x+4,x*4,x+8; cout”x=”xendl; cout”y=”yendl; cout”z=”zendl;六、位運算符與位運算表達式六、位運算符與位運算表達式 C+具有匯編語言所能完成的一些功能,它既

16、具有匯編語言所能完成的一些功能,它既有高級語言的特點,又具有低級語言的功能,這有高級語言的特點,又具有低級語言的功能,這些主要通過指針與位運算完成。所謂位運算是指些主要通過指針與位運算完成。所謂位運算是指進行二進制位的運算,就是對存儲在內(nèi)存中的數(shù)進行二進制位的運算,就是對存儲在內(nèi)存中的數(shù)據(jù)位進行運算。據(jù)位進行運算。六、位運算符與位運算表達式六、位運算符與位運算表達式一、基本概念一、基本概念1. 位運算位運算 位運算是指進行二進制位的運算。位運算是指進行二進制位的運算。2. 字節(jié)字節(jié) 是計算機存儲的最小單位,每一個字節(jié)都有一個是計算機存儲的最小單位,每一個字節(jié)都有一個地址。地址。3. 位位 計算

17、機只能接受計算機只能接受0和和1兩個數(shù),所有的字符、數(shù)字兩個數(shù),所有的字符、數(shù)字等都是由這兩個數(shù)組合而成。一個字節(jié)由等都是由這兩個數(shù)組合而成。一個字節(jié)由8個二個二進位組成。其中右邊的一位稱為進位組成。其中右邊的一位稱為“最低位最低位”,最,最左邊的一位稱為左邊的一位稱為“最高位最高位”。六、位運算符與位運算表達式六、位運算符與位運算表達式4. 原碼原碼 只將最高位作符號位只將最高位作符號位(以以0代表正,代表正,1代表負代表負),其其余各位代表數(shù)值本身的絕對值。余各位代表數(shù)值本身的絕對值。5. 反碼反碼 一個數(shù)如果值為正,則它的反碼與原碼相同。一個數(shù)如果值為正,則它的反碼與原碼相同。 一個數(shù)的

18、值如果為負,則符號位為一個數(shù)的值如果為負,則符號位為1,其余各位,其余各位是對原碼取反。是對原碼取反。6. 補碼補碼 原碼和反碼都不便于計算機內(nèi)的運算,一般都原碼和反碼都不便于計算機內(nèi)的運算,一般都是采用補碼。是采用補碼。六、位運算符與位運算表達式六、位運算符與位運算表達式補碼的規(guī)定:補碼的規(guī)定: 正數(shù):其原碼、反碼、補碼相同。正數(shù):其原碼、反碼、補碼相同。負數(shù):最高位為負數(shù):最高位為1,其余各位為原碼的相應(yīng)位取,其余各位為原碼的相應(yīng)位取反,然后對整個數(shù)加反,然后對整個數(shù)加1。 如果已知一個負數(shù)的補碼,想將其轉(zhuǎn)換為十進制如果已知一個負數(shù)的補碼,想將其轉(zhuǎn)換為十進制數(shù),可以:數(shù),可以:(1) 先對

19、各位取反先對各位取反(2) 再將其轉(zhuǎn)換成十進制再將其轉(zhuǎn)換成十進制(3) 加上負號,減加上負號,減1。六、位運算符與位運算表達式六、位運算符與位運算表達式1. 位運算符的種類位運算符的種類C+的位運算符主要有以下幾種:的位運算符主要有以下幾種:(1) “&”為按位與運算符為按位與運算符(2) “|”為按位或運算符為按位或運算符(3) “”為按位異或運算符為按位異或運算符(4) “”為按位取反運算符為按位取反運算符(5) “”右移運算符右移運算符六、位運算符與位運算表達式六、位運算符與位運算表達式2 2按位與運算符(按位與運算符(& &) 參加運算的兩個數(shù)據(jù),按二進位進行參

20、加運算的兩個數(shù)據(jù),按二進位進行“與與”運算。如果兩運算。如果兩個相應(yīng)的二進位都為個相應(yīng)的二進位都為1,則該位與的結(jié)果為,則該位與的結(jié)果為1,否則為,否則為0。即即1&1=1;1&0=0;0&1=0;0&0=0。如如 2&4,其結(jié)果為,其結(jié)果為0,具體運算如下所示:,具體運算如下所示:2= 0 0 0 0 0 0 1 04= 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0&六、位運算符與位運算表達式六、位運算符與位運算表達式練習(xí):練習(xí): 7&4=? 12&9=?六、位運算符與位運算表達式六、位運算符與位運算表達式3 3

21、按位或運算符(按位或運算符(| |)參加運算的兩個數(shù)據(jù),按二進位進行參加運算的兩個數(shù)據(jù),按二進位進行“或或”運算。兩個相運算。兩個相應(yīng)的二進位中只要有一個為應(yīng)的二進位中只要有一個為1 1,或運算的結(jié)果為,或運算的結(jié)果為1 1,只有當,只有當兩個二進位都為兩個二進位都為0 0時,或運算的結(jié)果才為時,或運算的結(jié)果才為0 0。 3= 0 0 0 0 0 0 1 1 4= 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1六、位運算符與位運算表達式六、位運算符與位運算表達式如如 3|4=7,具體運算如下:,具體運算如下:3= 0 0 0 0 0 0 1 14= 0 0 0 0 0 1 0

22、0 0 0 0 0 0 1 1 1|六、位運算符與位運算表達式六、位運算符與位運算表達式4 4按位異或運算符(按位異或運算符( )按位異或是指參加運算的兩個二進位同號,則結(jié)果為按位異或是指參加運算的兩個二進位同號,則結(jié)果為0,異號結(jié)果為異號結(jié)果為1。如。如11=0,10=1。如如35=6,具體運算如下:,具體運算如下:3= 0 0 0 0 0 0 1 15= 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0六、位運算符與位運算表達式六、位運算符與位運算表達式5 5取反運算符(取反運算符( )取反運算符是用來對二進制按位取反,即將取反運算符是用來對二進制按位取反,即將0 0變變1

23、1,1 1變變0 0。如:。如:5=-65=-6,具體運算如下:,具體運算如下:5= 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0六、位運算符與位運算表達式六、位運算符與位運算表達式6 左移運算符()用來將一個數(shù)的各二進位全部左移若干位。用來將一個數(shù)的各二進位全部左移若干位。如如 42=16,具體運算如下:,具體運算如下:4= 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0)用來將一個數(shù)的各二進位全部右移若干位。用來將一個數(shù)的各二進位全部右移若干位。如如82=2 #includevoid main() int x,y,z;x=10&4;y=118;z=

24、53;cout”x=”xendl; cout”y=”yendl; cout”z=”zendl;七、賦值運算符及賦值表達式1. 賦值運算符C+C+將將“=”=”作為賦值運算符,它與數(shù)學(xué)的表示方作為賦值運算符,它與數(shù)學(xué)的表示方式不一樣,數(shù)學(xué)中的式不一樣,數(shù)學(xué)中的“=”=”表示等于號,而表示等于號,而C+C+的的等于號必須是等于號必須是“= =”= =”。賦值運算符為從右向左結(jié)合,其優(yōu)先級比較低,賦值運算符為從右向左結(jié)合,其優(yōu)先級比較低,僅僅高于逗號運算符。僅僅高于逗號運算符。如如 x=y=z=8x=y=z=8,表示先將,表示先將8 8賦給賦給z z,再把,再把z z的值賦給的值賦給y,y,再把再把

25、y y的值賦給的值賦給x x。七、賦值運算符及賦值表達式2. 賦值表達式用賦值運算符將變量與表達式連接起來構(gòu)成的表用賦值運算符將變量與表達式連接起來構(gòu)成的表達式稱為賦值表達式,如達式稱為賦值表達式,如x=x+5注意:賦值號的左邊只能是變量,不能是常量或注意:賦值號的左邊只能是變量,不能是常量或表達式。表達式。七、賦值運算符及賦值表達式3. 復(fù)合賦值運算符及其表達式在賦值運算符在賦值運算符“=”之前加上其它運算符,構(gòu)成復(fù)之前加上其它運算符,構(gòu)成復(fù)合賦值運算符,如合賦值運算符,如“+=”、“*=”等,復(fù)合賦值運等,復(fù)合賦值運算符的操作如下:算符的操作如下:x+=8 相當于相當于 x=x+8y*=x-6 相當于相當于 y=y*(x-6)m/=12 相當于相當于 m=m/12七、賦值運算符及賦值表達式 凡是二元(二目)運算符,都可以與賦值凡是二元(二目)運算符,都可以與賦值運算符一起組成復(fù)合賦值運算符。運算符一起組成復(fù)合賦值運算符。C+共共有有10種復(fù)合賦值運算符:種復(fù)合賦值運算符:+=、-=、*=、/=、%=、&=、|=

溫馨提示

  • 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

提交評論