




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學(xué)1ch運算符和表達式2運算符根據(jù)運算符的操作數(shù)的個數(shù)不同,可將其分為單目(一元):對一個操作數(shù)運算雙目(二元):對二個操作數(shù)運算三目(三元):對三個操作數(shù)運算P.580表E.1C++常用運算符一覽表第2頁/共45頁第1頁/共45頁優(yōu)先級操作符結(jié)合性1::左→右2.->[]()左→右3++--~!-+&*sizeofnewdelete(類型)右→左4.*->*左→右5*/%左→右6+-左→右7<<>>左→右8<<=>>=左→右9==!=左→右10&左→右11^左→右12|左→右13&&左→右14||左→右15?:右→左16=*=/=+=-=|=<<=>>=%=&=^=&&=||=右→左17,左→右C++操作符的優(yōu)先級與結(jié)合性第3頁/共45頁第2頁/共45頁4目錄3.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第4頁/共45頁第3頁/共45頁53.1算術(shù)運算數(shù)學(xué)中,算術(shù)運算包括加、減、乘、除、乘方及開方等。在C++中,算術(shù)運算是由算術(shù)運算符或庫函數(shù)實現(xiàn)的。P.576常用的C++庫函數(shù)及類庫第5頁/共45頁第4頁/共45頁6算術(shù)運算符的優(yōu)先級和結(jié)合性優(yōu)先級運算符描述目數(shù)結(jié)合性3+正號單目從右至左-負號5*乘法雙目從左至右/除法%取余6+加法-減法第6頁/共45頁第5頁/共45頁73.1.1算術(shù)運算符(1)除法運算“/
”,兩個整數(shù)相除,結(jié)果為整數(shù),否則為實數(shù)。(2)求余運算“%”,要求參與運算的兩個操作數(shù)都是整型,其結(jié)果是兩個數(shù)相除的余數(shù)。(3)負值的求余運算結(jié)果的符號與運算符左邊的操作數(shù)的符號一致。5/-2=-22/-3=05/2.0=2.5(float)5/2=2.55%-2=1-5%2=-12%-3=2-2%-3=-2第7頁/共45頁第6頁/共45頁83.1.2優(yōu)先級和結(jié)合性單目運算符的優(yōu)先級最高,其次是乘、除和求余,最后是加、減。運算符的結(jié)合性是指運算符和操作數(shù)的結(jié)合方式,它有從左至右和從右至左兩種。只有當兩個同級運算符共用一個操作數(shù)時,結(jié)合性才會起作用。例如:c-a+b操作數(shù)a的兩邊的運算符相同,則先進行c-a操作除1目、3目、賦值運算符外的操作符的結(jié)合性均是從左到右。第8頁/共45頁第7頁/共45頁93.1.3數(shù)據(jù)類型轉(zhuǎn)換C++采用兩種方法對數(shù)據(jù)類型進行轉(zhuǎn)換:一種是自動轉(zhuǎn)換;另一種是強制轉(zhuǎn)換。自動轉(zhuǎn)換是將數(shù)據(jù)類型按從低到高的順序自動進行轉(zhuǎn)換,由于這種轉(zhuǎn)換不會丟失有效的數(shù)據(jù)位,因而是安全的。強制轉(zhuǎn)換是在程序中通過指定數(shù)據(jù)類型來改變,將一個變量從其定義的類型人為地改變成為另一種類型。由于這種轉(zhuǎn)換可能會丟失有效的數(shù)據(jù)位,因而是不安全的。(<類型名>)<表達式><類型名>(<表達式>)
第9頁/共45頁第8頁/共45頁10類型轉(zhuǎn)換的順序整型(int)無符號長整型(unsignedlong)長整型(long)無符號整型(unsigned)短整型,字符型(short,char)雙精度實型(double)單精度實型(float)長雙精度實型(longdouble)第10頁/共45頁第9頁/共45頁111.自動轉(zhuǎn)換字符型、整型、實型之間可以進行混合運算,其中字符型數(shù)據(jù)以ASCⅡ碼的十進制數(shù)參與運算。運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換規(guī)則:類型轉(zhuǎn)換由系統(tǒng)自動完成。轉(zhuǎn)換總是朝表達數(shù)據(jù)能力更強的方向,并且轉(zhuǎn)換總是逐個運算符進行的。例如:inti=10;longl=4;floatf=5.0;doubled=1.25;則:i+’a’+2*d-f/l運算結(jié)果為double型的108.25第11頁/共45頁第10頁/共45頁122.強制轉(zhuǎn)換功能:將一個表達式的值轉(zhuǎn)換成某個類型格式:(類型名)
(表達式)說明:括號必須,但是,如果表達式是單個操作數(shù),其括號可以省。例如:(int)x(int)(x+y)一般,系統(tǒng)對操作數(shù)自動進行類型轉(zhuǎn)換,但如果:a%b要求a和b都是整型,如果不是,必須先進行轉(zhuǎn)換:
(int)a%b(int)a%(int)b轉(zhuǎn)換后只得到一個中間變量,被轉(zhuǎn)換的變量的類型不變。第12頁/共45頁第11頁/共45頁133.1.4代數(shù)式和表達式為了能讓C++程序進行數(shù)值計算,還必須將代數(shù)式寫合法的C++表達式。(1)注意書寫規(guī)范(2)注意加圓括號(3)注意數(shù)據(jù)類型(4)注意符號^第13頁/共45頁第12頁/共45頁143.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第14頁/共45頁第13頁/共45頁153.2賦值運算符在C++中,賦值運算是使用賦值運算符“=”來操作的,它是使用最多的雙目運算符。賦值運算符“=”的作用是將賦值符右邊操作數(shù)的值存儲到左邊操作數(shù)所在的內(nèi)存空間。賦值符“=”左邊的操作數(shù)必須是左值。賦值表達式的值和類型是左值的值和類型。第15頁/共45頁第14頁/共45頁163.2.1左值和右值左值(L-value):能出現(xiàn)在賦值表達式左邊的表達式。左值表達式具有存放數(shù)據(jù)的空間,并且存放是允許的。例如:inta=3;右值:只能出現(xiàn)在賦值表達式右邊的表達式。例如:inta;constintb=6;a=b+8;//a是左值,b+8為右值
b=8;//error,b是常量,只能作右值
(a=4)=8;//a=4是左值表達式,可以被賦值
32=a+2;//error,32是常量,只能作右值第16頁/共45頁第15頁/共45頁173.2.2數(shù)值截取和數(shù)值溢出賦值表達式的值和類型是左值的值和類型。在賦值表達式中,當右值的數(shù)據(jù)類型低于左值的數(shù)據(jù)類型時,C++會自動進行數(shù)據(jù)類型的轉(zhuǎn)換。若右值的數(shù)據(jù)類型高于左值的數(shù)據(jù)類型且不超過左值的范圍時,C++會自動進行數(shù)值截取。如果一個數(shù)值超出一個數(shù)據(jù)類型所表示的數(shù)據(jù)范圍,則會出現(xiàn)數(shù)值溢出。第17頁/共45頁第16頁/共45頁18溢出進行算術(shù)運算時,很可能溢出結(jié)果。發(fā)生溢出是由于一個變量被賦予一個超出其數(shù)據(jù)類型表示范圍的數(shù)值。數(shù)值溢出不會引起編譯錯誤,只要分母不為0就不會引起除0運行故障,但會使運行結(jié)果發(fā)生偏差。例如:
shortintweight=42896;cout<<weight<<endl;得到的結(jié)果是42896的補碼(-22640)即:42896-65536=-22640第18頁/共45頁第17頁/共45頁19[例Ex_OverFlow]一個整型溢出的例子#include<iostream>usingnamespacestd;intmain(){ shortnTotal,nNum1,nNum2; nNum1=1000; nNum2=1000; nTotal=nNum1*nNum2; cout<<nTotal<<"\n"; return0; }第19頁/共45頁第18頁/共45頁203.2.3復(fù)合賦值算術(shù)運算+=加賦值-=減賦值*=乘賦值/=除賦值%=求余賦值位運算&=位與賦值|=位或賦值^=位異或賦值<<=左移位賦值>>=右移位賦值第20頁/共45頁第19頁/共45頁213.2.3復(fù)合賦值10種復(fù)合賦值運算符都是在賦值符“=”之前加上其他運算符而構(gòu)成的。
在復(fù)合賦值運算符之間不能有空格。復(fù)合運算符的優(yōu)先級和賦值符的優(yōu)先級一樣,在C++的所有運算符中只高于逗號運算符,而且復(fù)合賦值運算符的結(jié)合性也和賦值符一樣,是從右至左。第21頁/共45頁第20頁/共45頁223.2.4多重賦值多重賦值是指在一個賦值表達式中出現(xiàn)兩個或更多的賦值符“=”。賦值表達式幾乎可以出現(xiàn)在程序的任何地方,由于賦值運算符的等級比較低,因此這時的賦值表達式兩邊要加上圓括號。第22頁/共45頁第21頁/共45頁233.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第23頁/共45頁第22頁/共45頁243.3sizeof運算符sizeof運算符的目的是返回操作數(shù)所占的內(nèi)存空間大小(字節(jié)數(shù))由于同一類型的操作數(shù)在不同的計算機中占用的存儲字節(jié)數(shù)可能不同,因此sizeof運算的結(jié)果有可能不一樣。sizeof(<表達式>)sizeof(<數(shù)據(jù)類型>)第24頁/共45頁第23頁/共45頁253.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第25頁/共45頁第24頁/共45頁263.4逗號運算符逗號運算符,把多個表達式連接起來,構(gòu)成一個逗號表達式在計算時,C++將從左至右逐個計算每個表達式,最終整個表達式的結(jié)果是最后計算的那個表達式的類型和值,即表達式n的類型和值。逗號運算符“,”的優(yōu)先級是最低的,必要時注意加圓括號,以使逗號表達式的運算次序先于其他表達式。表達式1,表達式2,表達式3,…,表達式n第26頁/共45頁第25頁/共45頁273.4逗號運算符例:如果a=5,表達式a=3*5,a*4的值為即:a=3*5,a*4注意:表達式a=3*5,a*4與a=(3*5,a*4)的區(qū)別例:如果a=5,表達式a=(3*5,a*4)的值為逗號表達式可以嵌套:例:如果a=5,表達式(a=3*5,a*4),a+5的值為即:a=3*5,a*4這時的a=15
所以:a+5就等于206020第27頁/共45頁第26頁/共45頁283.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第28頁/共45頁第27頁/共45頁293.5自增和自減單目運算符自增(++)和自減(--)為左值加1或減1提供一種非常有效的方法。自增(++)和自減(--)運算符既可放在左值的左邊,也可以出現(xiàn)在左值的右邊,分別稱為前綴運算符和后綴運算符。前綴運算符、后綴運算符和其他的運算符組合在一起,在求值次序上就會產(chǎn)生根本不同。
第29頁/共45頁第28頁/共45頁30自增:++++i:先加1后使用i++:先使用后加1例:i=3;j1=++i;j1=4相當于執(zhí)行:i=i+1;j1=i;j2=i++;j2=3相當于執(zhí)行:j2=i;i=i+1;自減:----i:先減1后使用i--:先使用后減1例:i=3;j1=--i;j1=2相當于執(zhí)行:i=i-1;j1=i;j2=i--;j2=3相當于執(zhí)行:j2=i;i=i-1;3.5.1一般用法第30頁/共45頁第29頁/共45頁313.5.2前綴和后綴的區(qū)別由于前增量操作返回的值即修改之后的變量值,所以返回的仍然是一個左值。例如:inta=3;++(++a);//ok:++a是左值。a的值是5由于后增量操作返回的值是原先a的值,而后a的值已經(jīng)發(fā)生變化,故返回的不能是當前a,只能是過去的a值,不能是左值。例如:inta=3;++(a++);//error:a++不是左值第31頁/共45頁第30頁/共45頁323.5.3注意事項(1)前綴自增或自減表達式的結(jié)果仍為一個左值,而后綴自增或自減表達式的結(jié)果不是左值。對于等級相同的單目運算符來說,哪一個運算符靠近操作數(shù),就和哪個運算符先結(jié)合。(2)自增或自減運算符是兩個“+”或兩個“-”的一個整體,中間不能有空格。如果有多于兩個“+”或兩個“-”連寫的情況,編譯時會首先識別自增或自減運算符。(3)在有自增或自減運算符的混合運算中,一要注意次序,二要注意左值對應(yīng)于一塊內(nèi)存空間這個特性(4)在cout語句中的自增或自減運算中,不同編譯器的處理方式也是不一樣的。第32頁/共45頁第31頁/共45頁33操作符的識別編譯器采用貪吃法則如果有多于兩個+或兩個-連寫的情況,則編譯首先識別前面兩個+或-為增量或減量操作符。
inta=3,b=5,c;c=a+b;//ok;c=a++b;//錯:理解為a++bc=a+++b;//ok:a+++bc=a++++b;//錯:理解為a++++bc=a+++++b;//錯:理解為a+++++b第33頁/共45頁第32頁/共45頁343.1算術(shù)運算3.2賦值運算3.3sizeof運算符3.4逗號運算符3.5自增和自減3.6位運算第34頁/共45頁第33頁/共45頁353.6位運算運算符描述位邏輯運算~按位求反,單目&按位與,雙目^按位異或,雙目|按位或,雙目移位運算<<左移,雙目低位補0,移出的高位舍棄>>右移,雙目高位補0或符號位,第35頁/共45頁第34頁/共45頁363.6.1位邏輯運算位與操作&將兩個操作數(shù)每一位做與操作
shorta=12;//00001100shortb=6;//00000110c=a&b;//00000100=4,比較a&&b位或操作|將兩個操作數(shù)每一位做或操作
inta=12;//00001100intb=6;//00000110c=a|b為//00001110=14,比較a||b第36頁/共45頁第35頁/共45頁373.6.1位邏輯運算位異或操作^將兩個操作數(shù)每一位做異或操作。若兩個操作數(shù)相等,值為0;若兩個操作數(shù)不等,值為1。
inta=12;//00001100intb=6;//00000110c=a^b;//00001010=10位反操作~將一個操作數(shù)的每一位取反,0變1,1變0。
inta=12;//00001100b=~a//11110011第37頁/共45頁第36頁/共45頁38左移操作
<<將整數(shù)最高位擠掉,在右端補0。
inta=12;//00001100a=a<<1;//00011000=24右移操作>>對于有符號數(shù),若最高位是1,則高位擠進去1;最高位是0,則高位擠進去0;對于無符號數(shù),則一律高位擠進去0;
shortinta=-2;//1111111111111110a=a>>1;//1111111111111111=-1unsignedshortintb=65535;
//1111111111111111b=b>>1;//0111111111111111=327673.6.2移位運算第38頁/共45頁第37頁/共45頁39[例Ex_BitOP]位運算實例#include<iostream>#include<iomanip>
//由于后面用到setw格式算子,故添加此頭文件usingnamespacestd;voidout2(unsignedn)
//定義一個函數(shù),將一個無符號整型數(shù)n按二進制數(shù)輸出{ un
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年房屋終止合同協(xié)議書模板
- 六年級下冊數(shù)學(xué)教案-數(shù)學(xué)好玩2《神奇的莫比烏斯帶》 |北師大版
- 2024-2025學(xué)年六年級下學(xué)期數(shù)學(xué)第二單元圓柱和圓錐的綜合復(fù)習(xí)(教案 )
- 五金廠的勞動合同(2025年版)
- 二年級上冊數(shù)學(xué)教案-3.2 兒童樂園-北師大版
- (高清版)DB45∕T 838-2021 三江侗族自治縣侗族百家宴服務(wù)規(guī)范
- 2025年湖南工藝美術(shù)職業(yè)學(xué)院單招職業(yè)技能測試題庫一套
- 【單元測試】部編版語文三年級上冊第六單元分層訓(xùn)練B卷(提升篇)-(含解析)
- 2024年海洋石油修井機項目投資申請報告代可行性研究報告
- 2024年年物流倉儲項目資金需求報告代可行性研究報告
- 部編版語文三年級下冊綜合性閱讀-理解人物情感-課件-(共32張課件).課件
- 2024年中國甜瓜市場調(diào)查研究報告
- (中級)航空油料特設(shè)維修員(四級)理論考試題庫-上(單選題)
- 部編人教版六年級道德與法治下冊全冊完整版課件
- 電動車輛動力電池系統(tǒng)及應(yīng)用技術(shù) 第3版 課件全套 王震坡 第1-11章 動力電池及其驅(qū)動的電動車輛- 動力電池充電方法與基礎(chǔ)設(shè)施
- 【獨立儲能】山西省獨立儲能政策及收益分析-中國能建
- (正式版)CB∕T 4550-2024 船舶行業(yè)企業(yè)安全設(shè)備設(shè)施管理規(guī)定
- 新入職員工廉政談話
- JB∕T 9006-2013 起重機 卷筒標準規(guī)范
- 2024內(nèi)蒙古中考數(shù)學(xué)二輪專題復(fù)習(xí) 二次函數(shù)與幾何綜合題 類型二 面積問題(課件)
- 太平洋保險計劃書模板
評論
0/150
提交評論