




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第4章章 語句和表達(dá)式語句和表達(dá)式 徐遵義徐遵義 , 2語句和表達(dá)式語句和表達(dá)式賦值語句與賦值表達(dá)式賦值語句與賦值表達(dá)式算術(shù)運(yùn)算算術(shù)運(yùn)算關(guān)系運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算邏輯運(yùn)算條件運(yùn)算條件運(yùn)算逗號表達(dá)式逗號表達(dá)式sizeofsizeof運(yùn)算運(yùn)算位運(yùn)算位運(yùn)算小結(jié)與作業(yè)小結(jié)與作業(yè)3C+C+中的語句中的語句語句是程序組成的基本單位,必須是以語句是程序組成的基本單位,必須是以” ;”;”結(jié)束結(jié)束執(zhí)行語句是為了完成某個操作或修改某個數(shù)據(jù)執(zhí)行語句是為了完成某個操作或修改某個數(shù)據(jù)C+C+語言的語句類型語言的語句類型變量聲明語句,如:變量聲明語句,如:int x, y;執(zhí)行語句執(zhí)行語句: : 流程控制:流程控制:i
2、f-else;do-while;for;switch;continue;break;if-else;do-while;for;switch;continue;break;表達(dá)式語句:表達(dá)式語句: x=0;x=0;x = x + 1;函數(shù)和流對象調(diào)用語句函數(shù)和流對象調(diào)用語句空語句空語句: : 只有一個分號的語句,其形式為:只有一個分號的語句,其形式為:; ;什么也不做,只表示語句的存在什么也不做,只表示語句的存在自頂向下程序設(shè)計時用在那些未完成的模塊中自頂向下程序設(shè)計時用在那些未完成的模塊中復(fù)合語句復(fù)合語句: : t = x; x = y; y = t;45表達(dá)式表達(dá)式由操作符、操作數(shù)和標(biāo)點(diǎn)符號
3、組成的序列,用來說明一個由操作符、操作數(shù)和標(biāo)點(diǎn)符號組成的序列,用來說明一個計算過程,如計算過程,如 z = x+yz = x+y操作數(shù)操作數(shù)也稱為也稱為運(yùn)算量運(yùn)算量或或數(shù)據(jù)數(shù)據(jù),可以是,可以是常量、變量或函數(shù)常量、變量或函數(shù);只有數(shù);只有數(shù)據(jù)的式子是最簡單的表達(dá)式。據(jù)的式子是最簡單的表達(dá)式。操作符操作符描述的是對數(shù)據(jù)進(jìn)行的操作,描述的是對數(shù)據(jù)進(jìn)行的操作,C+C+語言的操作符有語言的操作符有4040多種;多種;根據(jù)根據(jù)操作符操作符需要的需要的操作數(shù)操作數(shù)個數(shù)不同,將個數(shù)不同,將操作符操作符分為分為 3 3 類:單目運(yùn)類:單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符;算符、雙目運(yùn)算符和三目運(yùn)算符;表達(dá)式可以
4、嵌套,如表達(dá)式可以嵌套,如 2+3+52+3+5* *sizeof(int)/345sizeof(int)/345表達(dá)式根據(jù)某些約定、求值次序、結(jié)合性和優(yōu)先級規(guī)則來表達(dá)式根據(jù)某些約定、求值次序、結(jié)合性和優(yōu)先級規(guī)則來進(jìn)行計算進(jìn)行計算約定:類型轉(zhuǎn)換的約定,由低約定:類型轉(zhuǎn)換的約定,由低高高求值次序:與編譯器有關(guān)求值次序:與編譯器有關(guān)6操作符:操作符:= =作用是將一個數(shù)據(jù)賦給一個變量作用是將一個數(shù)據(jù)賦給一個變量, ,如如 int a=3;int a=3;將一個表達(dá)式的值賦給一個變量將一個表達(dá)式的值賦給一個變量, ,如如 int a=3;int b=a+3;int a=3;int b=a+3;賦值表
5、達(dá)式賦值表達(dá)式由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子語法形式:語法形式: 賦值表達(dá)式求解過程:將賦值運(yùn)算符右側(cè)賦值表達(dá)式求解過程:將賦值運(yùn)算符右側(cè)“表達(dá)式表達(dá)式”的值的值賦給左側(cè)的變量。賦給左側(cè)的變量。表達(dá)式的值就是被賦值的變量的值表達(dá)式的值就是被賦值的變量的值。上述一般形式中的上述一般形式中的“表達(dá)式表達(dá)式”還可以是一個賦值表達(dá)式:還可以是一個賦值表達(dá)式: a=(b=5)C語言允許連續(xù)賦值語言允許連續(xù)賦值7變量賦初值變量賦初值程序中常需要對一些變量預(yù)先設(shè)置初值。程序中常需要對一些變量預(yù)先設(shè)置初值。C+C+語言允許在定義變量的同時使變量
6、初始化。語言允許在定義變量的同時使變量初始化。int a=3; /int a=3; /* *指定指定a a為整型變量,初值為為整型變量,初值為3 3* */ / float f=3.56; / float f=3.56; /* *指定指定f f為實型變量,初值為為實型變量,初值為3.563.56* */ / char c=a; / char c=a; /* *指定指定c c為字符變量,初值為為字符變量,初值為aa* */ /也可以使被定義的變量的一部分賦初值。也可以使被定義的變量的一部分賦初值。 int a,b,c=5; /int a,b,c=5; /* *指定指定a,b,ca,b,c為整型變
7、量,只對為整型變量,只對c c初始化初始化* */ /如果對幾個變量賦予初值如果對幾個變量賦予初值3 3,應(yīng)寫為,應(yīng)寫為:int a=3,b=3,c=3;:int a=3,b=3,c=3; 不能寫成:不能寫成:int a=b=c=3int a=b=c=3注意:int a=3; 相當(dāng)于:int a; /*指定a為整型變量*/ a=3; /*賦值語句,將3賦給a*/ int a,b,c=5; 相當(dāng)于: int a,b,c; /*指定a,b,c為整型變量*/ c=5; /*賦值語句,將5賦給c*/8中學(xué)階段已學(xué)過的算術(shù)運(yùn)算中學(xué)階段已學(xué)過的算術(shù)運(yùn)算基本運(yùn)算:、基本運(yùn)算:、, , , , , , 取余取
8、余其它運(yùn)算:取整、求整(四舍伍入),()其它運(yùn)算:取整、求整(四舍伍入),()C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算+ +、* *(乘)、(乘)、/ /(除)、(除)、% %(求余)(求余)雙目或雙元運(yùn)算符雙目或雙元運(yùn)算符+ +、- -、* *、/ / 的運(yùn)算量可以是整型、實型甚至為字符型的運(yùn)算量可以是整型、實型甚至為字符型如:如:4 + 84 + 8、8/58/5、5.55.5* *4 4 、 A A 1 1/ /對于整型數(shù)為除法取整操作,如對于整型數(shù)為除法取整操作,如 5/25/2結(jié)果為結(jié)果為2;2;對于浮點(diǎn)對于浮點(diǎn)數(shù)則為通常意義上的除法,如數(shù)則為通常意義上的除法,如6.2/26.2/2
9、為為3.13.1% % 要求兩個運(yùn)算量必須是整型數(shù)要求兩個運(yùn)算量必須是整型數(shù), ,否則會引起編譯錯誤否則會引起編譯錯誤如:如:5%2 5%2 、 5.6%25.6%29C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算雙目運(yùn)算符在運(yùn)算時運(yùn)算結(jié)果的類型取決于參與運(yùn)算的兩雙目運(yùn)算符在運(yùn)算時運(yùn)算結(jié)果的類型取決于參與運(yùn)算的兩個運(yùn)算量的數(shù)據(jù)類型個運(yùn)算量的數(shù)據(jù)類型類型一致時,結(jié)果為參與運(yùn)算的兩個運(yùn)算量的數(shù)據(jù)類型;類型一致時,結(jié)果為參與運(yùn)算的兩個運(yùn)算量的數(shù)據(jù)類型;當(dāng)兩個運(yùn)算量的類型不一致時,當(dāng)兩個運(yùn)算量的類型不一致時,系統(tǒng)會自動進(jìn)行類型轉(zhuǎn)換系統(tǒng)會自動進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換,轉(zhuǎn)換成相同的類型之后再進(jìn)行運(yùn)算成相同的類型之后再
10、進(jìn)行運(yùn)算稱為稱為隱式類型轉(zhuǎn)換;隱式類型轉(zhuǎn)換;隱式類型轉(zhuǎn)換規(guī)則隱式類型轉(zhuǎn)換規(guī)則:轉(zhuǎn)換總是朝表達(dá)能力更強(qiáng)的方向并且轉(zhuǎn)換總:轉(zhuǎn)換總是朝表達(dá)能力更強(qiáng)的方向并且轉(zhuǎn)換總是逐個運(yùn)算符進(jìn)行;是逐個運(yùn)算符進(jìn)行;charshort int long intdouble long double float unsigned charunsignedunsigned shortunsigned intunsigned long10C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算強(qiáng)制類型轉(zhuǎn)換,又稱顯示轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換,又稱顯示轉(zhuǎn)換在一個數(shù)值或變量前加上帶括號的類型名,或類型名后跟帶括號在一個數(shù)值或變量前加上帶括號的類型名,或類
11、型名后跟帶括號的數(shù)值或表達(dá)式的數(shù)值或表達(dá)式如如:cout(long)234*456/6endl; coutlong(234)*456/6endl;若類型名帶類型修飾符,則只能給類型名加括號若類型名帶類型修飾符,則只能給類型名加括號 cout(unsigned long)234*456/6endl;溢出溢出一個變量被賦予一個超出其數(shù)據(jù)類型表示范圍的數(shù)值時發(fā)生溢出一個變量被賦予一個超出其數(shù)據(jù)類型表示范圍的數(shù)值時發(fā)生溢出short weight = 32764+4; / VC結(jié)果結(jié)果 -32768數(shù)值溢出不會引起編譯錯誤數(shù)值溢出不會引起編譯錯誤( (有可能引起警告有可能引起警告) ),但運(yùn)行結(jié)果發(fā)生
12、,但運(yùn)行結(jié)果發(fā)生偏差偏差int a = 7 ;float x = 2.5 , y = 4.7 , z;求表達(dá)式求表達(dá)式 z = x + a%3*( int ) ( x + y )%2/4 的值的值11C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算復(fù)合的賦值運(yùn)算符:將算術(shù)運(yùn)算符與賦值運(yùn)算符結(jié)合起復(fù)合的賦值運(yùn)算符:將算術(shù)運(yùn)算符與賦值運(yùn)算符結(jié)合起來:來:+=+=、-=-=、* *= =、/=/=、%=%=注意:兩個符號之間不可以有空格注意:兩個符號之間不可以有空格 。優(yōu)先級與優(yōu)先級與“=” =” 同級、右結(jié)合性。同級、右結(jié)合性。 a=a+b; a=a-b; a=a*b; a=a/b; a=a%b; a+=
13、b; a-=b; a*=b; a/=b; a%=b; 壓縮壓縮等價等價例:例:c=b*=a+2; c=b=b*(a+2);12C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算自加、自減運(yùn)算符(自加、自減運(yùn)算符(+、-)自加運(yùn)算符自加運(yùn)算符 + 的推出的推出自減運(yùn)算符自減運(yùn)算符-的推出的推出自加、自減運(yùn)算符均為單目運(yùn)算,并且要求運(yùn)算量只能是變量自加、自減運(yùn)算符均為單目運(yùn)算,并且要求運(yùn)算量只能是變量在表達(dá)式中,一般不考慮在表達(dá)式中,一般不考慮+、- 的優(yōu)先級,而是去找它的運(yùn)算量,的優(yōu)先級,而是去找它的運(yùn)算量,從而確定它是以前綴形式還是以后綴形式出現(xiàn)從而確定它是以前綴形式還是以后綴形式出現(xiàn)例:例:int i
14、=0 ; i=i+1 ; i+=1; i+; ( +i; )i=i - 1 ; i- = 1; i- -; ( - -i; )13C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算自加、自減運(yùn)算符(自加、自減運(yùn)算符(+、-)如果如果以后綴形式出現(xiàn)以后綴形式出現(xiàn),則先參與其它運(yùn)算再使變量的值增,則先參與其它運(yùn)算再使變量的值增1 1(或(或減減1 1)如果如果以前綴形式出現(xiàn)以前綴形式出現(xiàn),則先使變量的值增,則先使變量的值增1 1(或減(或減1 1)后再參與其)后再參與其它運(yùn)算;它運(yùn)算;例:例:int i = 5 , x , y ; x = i+ ; y = i ;couti:i x:x y:yendl;例:
15、例:int i = 5 , x , y ; x = +i ; y = i ;couti:i x:x y:yendl;14C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算自加、自減運(yùn)算符(自加、自減運(yùn)算符(+、-)當(dāng)表達(dá)式中只有一個當(dāng)表達(dá)式中只有一個+、或、或-運(yùn)算時,前綴和后綴形式一樣運(yùn)算時,前綴和后綴形式一樣, ,如如 i+; +i;副作用問題副作用問題x=i+y ;x=i+(+y) ;x=i+y ;x=i; x = x + y; i = i+1; x=i; y=y+1; x=x+y;i=i+1;15C+C+中的基本算術(shù)運(yùn)算中的基本算術(shù)運(yùn)算負(fù)號運(yùn)算符負(fù)號運(yùn)算符( - ):( - ):單元、單目、一元
16、單元、單目、一元例例1: int a=5,b=8; a = - a * - b + 1 ;a=(-a)*(-b)+1;例例2: int x , y = 3 ; x = - y + 2;x=-y; x=x+2; y=y+1; 16關(guān)系運(yùn)算符關(guān)系運(yùn)算符: ,=,=(: ,=,=(等于等于),!=(),!=(不等于不等于) )運(yùn)算符運(yùn)算符對應(yīng)的初等數(shù)學(xué)運(yùn)算符對應(yīng)的初等數(shù)學(xué)運(yùn)算符含義含義小于小于大于大于=大于等于大于等于= =等于等于!=!=不等于不等于17關(guān)系運(yùn)算符運(yùn)算出的結(jié)果為關(guān)系運(yùn)算符運(yùn)算出的結(jié)果為 0 0 和和 非非 0 0:0 0 表示假,即該關(guān)系不成立;表示假,即該關(guān)系不成立;非非0 0
17、表示真,即該關(guān)系成立;表示真,即該關(guān)系成立;絕大多數(shù)編譯器,關(guān)系運(yùn)算得到的非絕大多數(shù)編譯器,關(guān)系運(yùn)算得到的非 0 0 結(jié)果為結(jié)果為 1 1,但是不要,但是不要利用這個利用這個 1 1;用關(guān)系運(yùn)算符連接操作數(shù)組成的表達(dá)式成為關(guān)系表達(dá)式;用關(guān)系運(yùn)算符連接操作數(shù)組成的表達(dá)式成為關(guān)系表達(dá)式;優(yōu)先級、雙目、左結(jié)合性優(yōu)先級、雙目、左結(jié)合性, = , = 優(yōu)先級相同,優(yōu)先級相同,=, != =, != 優(yōu)先級相同,且前優(yōu)先級相同,且前 4 4 個運(yùn)算符的優(yōu)先級高于后面?zhèn)€運(yùn)算符的優(yōu)先級高于后面 2 2 個運(yùn)算符的優(yōu)先級;個運(yùn)算符的優(yōu)先級;關(guān)系運(yùn)算符的優(yōu)先級低于所有算術(shù)運(yùn)算符的優(yōu)先級;關(guān)系運(yùn)算符的優(yōu)先級低于所有
18、算術(shù)運(yùn)算符的優(yōu)先級;18例:例:#include int main() int x=2,y=3,z; z = 3-1 = x+1 = y+2; cout“x=”x“,y=”y“,z=”zendl; x=2, y=3, z=1Press any key to continue19注意注意等于號等于號 “=” =” 與賦值號與賦值號 “=” =” 的區(qū)別;的區(qū)別;!= != 誤寫誤寫= =!,!,= = 誤寫誤寫 = = 誤寫誤寫 =;避免對兩個實數(shù)作相等或不相等的比較;避免對兩個實數(shù)作相等或不相等的比較;x!=3 x!=3 與與 x=!3x=!3區(qū)別區(qū)別例:例:int z1,z2;float f
19、1,f2;f1 = 100.111119f;f2 = 100.1111191f;z1 = f1 = f2;z2 = fabs(f1 - f2) 1e-6; 20計算關(guān)系表達(dá)式的值與判斷關(guān)系表達(dá)式的真假計算關(guān)系表達(dá)式的值與判斷關(guān)系表達(dá)式的真假int z;z = 3 bc;21邏輯運(yùn)算符:邏輯運(yùn)算符:&( (邏輯與邏輯與) )、|( (邏輯或邏輯或) )、! !( (邏輯非邏輯非) )!是單目是單目, 高于算術(shù)運(yùn)算;高于算術(shù)運(yùn)算;& 和和 | 都是雙元運(yùn)算;都是雙元運(yùn)算;& 比比 | 優(yōu)先級高,但都低于關(guān)系運(yùn)算(關(guān)系運(yùn)算低于算優(yōu)先級高,但都低于關(guān)系運(yùn)算(關(guān)系運(yùn)算低于算術(shù)運(yùn)算
20、);術(shù)運(yùn)算);用邏輯運(yùn)算符連接操作數(shù)組成的表達(dá)式成為邏輯表達(dá)式;用邏輯運(yùn)算符連接操作數(shù)組成的表達(dá)式成為邏輯表達(dá)式;22運(yùn)算規(guī)則運(yùn)算規(guī)則運(yùn)算量的值是運(yùn)算量的值是非非0 0時時, ,認(rèn)為是認(rèn)為是“真真”, ,是是 0 0 時時, ,認(rèn)為是認(rèn)為是“假假”;當(dāng)兩個運(yùn)算量都是當(dāng)兩個運(yùn)算量都是“真真”時,時,&的值為真,其它情況為假;的值為真,其它情況為假; 當(dāng)兩個運(yùn)算量都是假時當(dāng)兩個運(yùn)算量都是假時, | , | 的值為假,其它情況為真;的值為假,其它情況為真;邏輯運(yùn)算的結(jié)果為邏輯運(yùn)算的結(jié)果為真真時,用時,用1 1表示,為表示,為假假時,用時,用0 0表示表示23例:例:int a =7,b=5,
21、c=8;( a b & b c);/a大于大于b,并且,并且b大于大于c,結(jié)果為假,結(jié)果為假( a b | b c); /a大于大于b,或者,或者b大于大于c,結(jié)果為真,結(jié)果為真( !a );/如果如果a是是0,結(jié)果非,結(jié)果非0;如果;如果a是非是非0,結(jié)果是,結(jié)果是0并不改變并不改變a的值,的值,結(jié)果為假結(jié)果為假24要學(xué)會把分支結(jié)構(gòu)中的要學(xué)會把分支結(jié)構(gòu)中的條件條件用關(guān)系或邏輯表達(dá)式描用關(guān)系或邏輯表達(dá)式描述出來述出來例:例:下列數(shù)學(xué)式子下列數(shù)學(xué)式子3x5并且并且y5或或y3 & x93=x & x5 & y5 | y3x5) 例:判斷某個字符例:判斷某個字符 c
22、h 是否為大寫字母是否為大寫字母 char ch; cinch; ch = A25例:判斷某年例:判斷某年year是否是閏年。是否是閏年。 閏年的條件是符合下面兩者之一:閏年的條件是符合下面兩者之一: A:能被:能被4整除,但不能被整除,但不能被100整除整除 B:能被:能被400整除整除 int year,t1,t2,t3,t; scanf(%d, &year); t1=year%4 = 0; t2=year%100 != 0; t3=year%400 = 0; t=t1&t2|t3; 26短路表達(dá)式短路表達(dá)式求求 0&a 0&a 或或 1|a 1|a 時,則
23、不必計算表達(dá)式時,則不必計算表達(dá)式a a的值的值如果多個表達(dá)式用如果多個表達(dá)式用 &連接,則一個假表達(dá)式將使整個連連接,則一個假表達(dá)式將使整個連接都為假接都為假如果多個表達(dá)式用如果多個表達(dá)式用 | | 連接,則一個真表達(dá)式將使整個連連接,則一個真表達(dá)式將使整個連接都為真接都為真27例:例:#include int main( ) int x,y,z; x=y=0; z = x+&y+; coutx=”x“ty=”y“tz=“zendl; x=1 y=0 z=0Press any key to continue28例:例:#include int main( ) int i=0,
24、 j=0, k=5,z; z = (+i0)|(+j0)|(k+); couti=”i“tj=”j“tk=”k“tz=”“z= 18 ? nIsAdult =1: nIsAdult =0; 30作為作為分隔符分隔符使用使用如:如:float f1, f2, f3, f4float f1, f2, f3, f4;作為作為運(yùn)算符運(yùn)算符使用使用逗號表達(dá)式的一般形式逗號表達(dá)式的一般形式: :表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2,2,表達(dá)式表達(dá)式n n逗號表達(dá)式的值是最右邊表達(dá)式的值、優(yōu)先級最低逗號表達(dá)式的值是最右邊表達(dá)式的值、優(yōu)先級最低如果逗號表達(dá)式的最后一個表達(dá)式為左值,則該逗號表達(dá)式為左值如果逗號
25、表達(dá)式的最后一個表達(dá)式為左值,則該逗號表達(dá)式為左值int x,y,a,b;x=(y=10,y+2);cout“x:”x“ y:”yendl; b=(a=4*5,2*a , a+6) ;cout“a:”a“ b:”bendl;(a=1,b,x+1,y)=5;couta:a b:b x:x y:yendl;31一般形式為一般形式為: :sizeof(sizeof(數(shù)據(jù)類型);數(shù)據(jù)類型);sizeof(sizeof(變量名);變量名);sizeof(double)long double a; sizeof(a)32位運(yùn)算符位運(yùn)算符: 、 、& 、 、| (優(yōu)先級由高到低)(優(yōu)先級由高到低)位
26、運(yùn)算量只能是整型或字符型的數(shù)據(jù)位運(yùn)算量只能是整型或字符型的數(shù)據(jù) &:按位與運(yùn)算按位與運(yùn)算:按位異或運(yùn)算按位異或運(yùn)算|:按位或運(yùn)算按位或運(yùn)算:按位求反按位求反:按位右移運(yùn)算按位右移運(yùn)算aba&ba|baba00000101011110011011110033按位與運(yùn)算符按位與運(yùn)算符 & &運(yùn)算規(guī)則:如果參加運(yùn)算的兩個運(yùn)算量的相應(yīng)位都是運(yùn)算規(guī)則:如果參加運(yùn)算的兩個運(yùn)算量的相應(yīng)位都是1,1,則則該位的結(jié)果值為該位的結(jié)果值為1 1,否則為,否則為0 0。 應(yīng)用:對字節(jié)中某應(yīng)用:對字節(jié)中某N N位進(jìn)行清零位進(jìn)行清零例:例: char a = 0 x7a; char b =
27、 0 x98; a: 01111010 b: 10011000&: 00011000例例2:short a = 15;只保留最低位不變,其余位置只保留最低位不變,其余位置0 a: 00001111 b: 00000001&: 0000000134例例3:判斷一個數(shù)據(jù)的某位是否為:判斷一個數(shù)據(jù)的某位是否為1? int a; cina; 判斷判斷 a 是正數(shù)還是負(fù)數(shù)?是正數(shù)還是負(fù)數(shù)?10000000 00000000 00000000 00000000分析:分析:int text = 0 x8000; a: 1# # 0# # text: 10000000 00000000 100
28、00000 00000000&:35按位或運(yùn)算符按位或運(yùn)算符 | |運(yùn)算規(guī)則:如果兩個運(yùn)算量的相應(yīng)位不同,則該位的結(jié)果運(yùn)算規(guī)則:如果兩個運(yùn)算量的相應(yīng)位不同,則該位的結(jié)果值為值為1 1,相同則為原值,相同則為原值應(yīng)用:對字節(jié)中某應(yīng)用:對字節(jié)中某N N位進(jìn)行置位進(jìn)行置1 1 11111010例例1: char a=0 x7a; char b=0 x98; a: 01111010 b: 10011000|例例2:short a = 15;只保留最高位不變,其余位置只保留最高位不變,其余位置1 a: 00001111 b: 01111111| 0111111136按位異或運(yùn)算符按位異或運(yùn)算符
29、運(yùn)算規(guī)則:如果兩個運(yùn)算量的相應(yīng)位不同,則該位的結(jié)果運(yùn)算規(guī)則:如果兩個運(yùn)算量的相應(yīng)位不同,則該位的結(jié)果值為值為1 1,否則為,否則為0,0,又稱不進(jìn)位加又稱不進(jìn)位加應(yīng)用:對數(shù)據(jù)進(jìn)行簡單的加密,兩次異或運(yùn)算又恢復(fù)為原應(yīng)用:對數(shù)據(jù)進(jìn)行簡單的加密,兩次異或運(yùn)算又恢復(fù)為原值值 1110 0010例例1: char a=0 x7a; char b=0 x98; a: 0111 1010 b: 1001 1000例例2:short a = 15; a: 0000 1111 b: 0111 1011 0111 0100 0000 1111 0111 101137按位取反按位取反 運(yùn)算規(guī)則:對操作數(shù)的各位取反,
30、即運(yùn)算規(guī)則:對操作數(shù)的各位取反,即0 0變?yōu)樽優(yōu)? 1,1 1變?yōu)樽優(yōu)? 0。應(yīng)用:對數(shù)據(jù)進(jìn)行簡單的加密,兩次取反運(yùn)算又恢復(fù)為原應(yīng)用:對數(shù)據(jù)進(jìn)行簡單的加密,兩次取反運(yùn)算又恢復(fù)為原值值 1000 0101例例1: char a=0 x7a; a: 0111 1010 38左移位左移位 運(yùn)算規(guī)則:對操作數(shù)運(yùn)算規(guī)則:對操作數(shù) X X 的每一位向右平移的每一位向右平移n n位位, ,當(dāng)當(dāng)X X為有符號數(shù)時,左邊空位補(bǔ)符號位上的值,算術(shù)移位;為有符號數(shù)時,左邊空位補(bǔ)符號位上的值,算術(shù)移位;當(dāng)當(dāng)X X為無符號數(shù)時,左邊空位補(bǔ)為無符號數(shù)時,左邊空位補(bǔ)0 0,邏輯移位;,邏輯移位;應(yīng)用:快速地實施整數(shù)的乘法,
31、右移應(yīng)用:快速地實施整數(shù)的乘法,右移 n n 位相當(dāng)于除以位相當(dāng)于除以2 2n n位運(yùn)算與賦值運(yùn)算的復(fù)合位運(yùn)算與賦值運(yùn)算的復(fù)合: &=, |=, =, =, = 0011 1100 60例例1: 0000 1111 15 2 2 0000 0011 339C+C+語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性在求解表達(dá)式時,先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,例在求解表達(dá)式時,先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減,如如先乘除后加減,如 a-ba-b* *c c 相當(dāng)于相當(dāng)于a-(ba-(b* *c)c)如果在一個運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級別相同,如如果在
32、一個運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級別相同,如a-a-b+cb+c,則按規(guī)定的,則按規(guī)定的“結(jié)合方向結(jié)合方向”處理處理算術(shù)運(yùn)算符的結(jié)合方向為算術(shù)運(yùn)算符的結(jié)合方向為“自左至右自左至右”,即先左后右;,即先左后右;“自自左至右的結(jié)合方向左至右的結(jié)合方向”又稱又稱“左結(jié)合性左結(jié)合性”,即運(yùn)算對象先與左,即運(yùn)算對象先與左面的運(yùn)算符結(jié)合面的運(yùn)算符結(jié)合有些運(yùn)算符的結(jié)合方向為有些運(yùn)算符的結(jié)合方向為“自右至左自右至左”,即右結(jié)合性(例如,即右結(jié)合性(例如賦值運(yùn)算符)賦值運(yùn)算符)“結(jié)合性結(jié)合性”的概念在其他一些高級語言中是沒有的,是的概念在其他一些高級語言中是沒有的,是C C和和C+C+的特點(diǎn)之一,參見教材表的特點(diǎn)之一,參見教材表3-13-140舉例:用舉例:用C+語言的表達(dá)式表示下列數(shù)學(xué)式子語言的表達(dá)式表示下列數(shù)學(xué)式子1. 3x2+4xy+y2+5 v 在程序中可以使用下列在程序中可以使用下列數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù): fabs(x):求一個實數(shù):求一個實數(shù)x的絕對值,如的絕對值,如fabs(-4.5)的值為的值為4.5 abs(x ):求一個整數(shù):求一個整數(shù)x的絕對值,如的絕對值,如abs(6)的值為的值為6 sin(x):求三角的正弦值,參數(shù):求
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高端數(shù)控機(jī)床智能化升級關(guān)鍵技術(shù)集成與應(yīng)用報告
- 胃性胃炎的護(hù)理查房
- DB32/T 4585-2023高價值專利價值評估規(guī)范
- 燈展交通保障企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 2025年美妝項目可行性研究報告
- 2025年網(wǎng)絡(luò)游戲市場調(diào)研報告
- 2025年食堂改建可行性研究報告
- DB32/T 4562-2023淮南麥區(qū)白酒制曲專用小麥綠色生產(chǎn)技術(shù)規(guī)程
- 2025年刨花方條行業(yè)深度研究分析報告
- 部編版語文六年級上冊多媒體教學(xué)計劃
- 港口碼頭企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化管理體系全套資料匯編(2019-2020新標(biāo)準(zhǔn)實施模板)
- 2024CSCO結(jié)直腸癌診療指南解讀
- MOOC 信號與系統(tǒng)-西安電子科技大學(xué) 中國大學(xué)慕課答案
- 公需科目2023年度數(shù)字經(jīng)濟(jì)與驅(qū)動發(fā)展考試題庫及答案
- 中學(xué)生英才計劃面試常見問題
- 壓力容器安全風(fēng)險管控清單(日管控、周排查、月調(diào)度)
- 中小學(xué)心理健康教育指導(dǎo)綱要
- 嬰幼兒尿布性皮炎護(hù)理
- 國網(wǎng)兼職培訓(xùn)師培訓(xùn)課件
- 醫(yī)保藥品追溯系統(tǒng)協(xié)議
- 幼兒園教師游戲指導(dǎo)經(jīng)驗總結(jié)
評論
0/150
提交評論