C編程世界中的公式-運算符和表達式_第1頁
C編程世界中的公式-運算符和表達式_第2頁
C編程世界中的公式-運算符和表達式_第3頁
C編程世界中的公式-運算符和表達式_第4頁
C編程世界中的公式-運算符和表達式_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例第5章

C++編程世界中的公式——運算符和表達式C++中的運算符和表達式算術運算符和表達式關系運算符和表達式邏輯運算符和表達式條件運算符和表達式賦值運算符和表達式逗號運算符和表達式運算符優(yōu)先級綜合實例5.1C++中的運算符和表達式5.1.1運算符5.1.2表達式5.1C++中的運算符和表達式C++各種運算符的使用方法,以及由運算符組成的表達式,從而使你正確使用操作數(shù)的類型轉換和運算符的優(yōu)先級順序和結合性。認真、深入學習這一章,將助你在編程之路上前行,邁步更加堅實。5.1.1運算符在C++語言中,包含多種運算符,不同運算符有不同的運算次序,比如“*”、“/”的優(yōu)先級高于“+”、“-”的優(yōu)先級。如果表達式中相同運算符有一個以上,則可以從左至右或從右至左地計算它,這稱作為結合性。“+”、“-”、“*”和“/”的結合性都是從左至右的。5.1.2表達式表達式是由運算符、操作數(shù)(常量、變量、函數(shù)等)和括號按照一定的規(guī)則組成的式子。常量、變量和函數(shù)可認為是最簡單的表達式。表達式可以嵌套。每個表達式都有一個值。在計算時要考慮運算符的優(yōu)先級、結合性及數(shù)據(jù)類型的轉換。計算機中的表達式都要寫在一行上。表達式有算數(shù)、賦值、關系、邏輯,逗號等。在表達式的后邊加個分號就是表達式語句。除控制語句外,幾乎都是表達式語句。5.2算術運算符和表達式5.2.1基本算術運算符5.2.2算術運算符和算術表達式5.2.3自加和自減運算符5.2.1基本算術運算符基本的算術運算有加法、減法、乘法、除法和取模(求余數(shù)),下表基本算術運算符說明。運算符結合型乘法*從左至右除法/取模%加法+減法-5.2.2算術運算符和算術表達式1.加、減、乘運算inta,b,c;a=10;b=5;c=a+b*3-1;輸出c的結果是24。因為“*”的優(yōu)先級高于“+”和“-”,并且結合性為右結合,所以先算b*3,然后算a加上b與3的乘積15,最后算減法-1,得到結果b=24。2.取模運算21%6 //結果是34%2 /結果是04.0%2 //程序報錯,%運算符要求左右必須為整數(shù)取模運算“%”,要求運算符兩邊必須都是整數(shù),如果任何一邊不是整數(shù),程序就會報錯。5.2.2算術運算符和算術表達式3整除運算5/4 //結果是14/5 //結果是0當/運算符用于兩個整數(shù)相除時,如果商含有小數(shù)部分,將被截掉,不進行四舍五入。4浮點除運算5/4.0 //結果是1.254.0/5 //結果是0.8要進行通常意義的除運算,則至少應保證除數(shù)或被除數(shù)中有一個是浮點數(shù)或雙精度數(shù),可以在參加運算的整數(shù)值后補上小數(shù)點與0作為雙精度(double)常量參加運算。5.2.2算術運算符和算術表達式使用算術運算符需要注意4個問題。(1)“/”運算符的兩個運算對象均為整數(shù)時,其結果是整數(shù),如果有一個是浮點型數(shù)據(jù),其結果是浮點數(shù);(2)取模運算符“%”要求參與運算的兩個數(shù)均為整數(shù);(3)遵循算術的自然特征,例如禁止除數(shù)位0;(4)防止數(shù)據(jù)長度的溢出。5.2.3自加和自減運算符++(自增)、––(自減)是C++中使用方便且效率很高的兩個運算符,它們都是單目運算符,運算順序按照從右至左。1自加自減單獨運算i++; //++后置--j; //--前置2自加前置運算后直接賦值inti=5;x=++i; //i先加1(增值)后再賦給xy=i; //i=6,x=6,y=65.2.3自加和自減運算符3自加前置運算后再賦值inti=5;++i; //i自加1,值為6x=y=i; //i=6,y=6,x=64自加后置運算后直接賦值inti=5;x=i++; //i賦給x后再加1y=i; //x=5,i=6,y=65自加后置運算后再賦值inti=5;i++;x=y=i; //i=6,y=6,x=65.2.3自加和自減運算符由于++、––運算符內(nèi)含了賦值運算,所以運算對象只能賦值,不能作用于常量和表達式。比如5++、(x+y)++都是不合法的?!痉独?-1】計算自加自減表達式的值5.3關系運算符和表達式5.3.1關系運算符5.3.2關系表達式5.3.1關系運算符在解決許多問題時都需要進行情況判斷,C++中提供了關系運算符用于比較運算符兩邊的值。比較后返回的結果為布爾常量true或false。運算符結合性小于<小于等于<=大于>大于等于>=從左至右等于==不等于!=5.3.2關系表達式1整數(shù)和整數(shù)的關系表達式a=1;b=2;c=3;d=4;a+b>c+d“+”的優(yōu)先級高于“>”,所以先分別求出a+b

和c+d

的值,然后進行關系比較,運算結果false。5.3.2關系表達式2字符和字符的關系表達式'a'<'b'+'c'“<”右邊需要求算術運算和,所以字符‘b’和‘c’分別由字符型隱式的轉換為整型98和99,求和結果為197,“<”左邊的字符型也需要轉換為整型96才能進行比較,整個表達式的值為true。5.3.2關系表達式3關系表達式連用a>b>=c>d關系運算符優(yōu)先級相同,所以按照從左至右依次計算。假設a=1,b=2,c=0,d=4,先計算a>b的值為false,然后計算false>=c,因為“>=”兩邊數(shù)據(jù)類型不一致,布爾類型false轉換為整型0,0>=0比較結果為true,最后計算true>3,true轉換為數(shù)值型1,1>4比較結果為false,所以整個表達式結果為false。5.3.2關系表達式關系運算符的比較運算是由兩個等號組成,不要誤寫為賦值運算符=。5.3.2關系表達式判斷實數(shù)(float)是否相等,對下面兩個表達式分析一下。等于x==y應寫成fabs(x–y)<1e–6不等于x!=y應寫成fabs(x–y)>1e–6fabs(x–y)<1e–6表示x和y的差的絕對值小于0.000001,說明x和y的差值已經(jīng)非常小,可以認為兩者相同。5.4

邏輯運算符和表達式5.4.1邏輯運算符5.4.2邏輯表達式5.4

邏輯運算符和表達式公司開會,需要對某個決議進行表決,只有全票通過,決議才能通過,只要有一票不通過,決議就通不過,如果用邏輯關系來描述,這叫做“與”;還是這個公司進行,只要有一票反對,表決結果就是反對,只有大家都不反對,表決結果才是不反對,如果用邏輯關系來描述,這叫做“或”;其中某一票由贊同變?yōu)榉磳Γ蛘哂煞磳ψ優(yōu)橘澩?,這叫做“非”。5.4.1邏輯運算符邏輯運算符是用于實現(xiàn)邏輯運算和邏輯的判斷,返回類型是布爾(bool)型。下表為邏輯運算符。運算符優(yōu)先級邏輯求反!從左至右邏輯與&&邏輯或||5.4.2邏輯表達式在實際應用邏輯表示式之前,我們需要明確邏輯運算表達式有哪些,結果是怎么樣的。下面我們就列出邏輯運算關系表邏輯表達式結果邏輯表達式結果0&&0false0&&1false1&&0false1&&1true0||0false0||1true1||0true1||1true!0true!1false5.4.2邏輯表達式假設a=10,b=5,c=–3,分析下面表達式的結果。!a值為false非0數(shù)求非運算,結果為false;相反為0的數(shù)求非運算,結果為true。a&&b值為true&&兩邊都是非0數(shù)值,結果為true。a||b值為true||兩邊只要有一邊數(shù)值不為0,結果就為true。a+c>=b&&b值為true因為“+”的優(yōu)先級高于“>=”,先計算a+c得7,再與b比較,7大于等于5成立,結果為true,轉換為數(shù)值類型1,最后再做邏輯與運算,1和b邏輯與結果得true。5.5

條件運算符和表達式條件表達式?:A?B:C其中,A,B和C分別是3個表達式。該運算符的功能如下說明。先計算A;如果A的值為true(非0),返回B的值作為整個條件運算表達式的值;如果A的值為false(0),返回C的值作為整個條件運算表達式的值。條件運算表達式的返回類型將是B和C這兩個表達式中數(shù)據(jù)類型高的那種類型。簡單條件表達式a=(x>y?12:10.0);若x>y(值為true),將12賦給a,否則a=10.0但a的類型最后都是double。5.6

賦值運算符和表達式5.6.1賦值運算符5.6.2賦值表達式5.6.1

賦值運算符=+=-=*=/=%=&=^=|=>>=<<=&&=||=從右至左5.6.2

賦值表達式1簡單賦值語句inti=100;//變量名為i的地址中內(nèi)存放數(shù)據(jù)是100chara='A',b,c;//聲明三個字符型變量,同時變量a賦值為字符‘A‘/*變量b的值為‘A‘+1,即98,但是b是字符型,98再轉換為字符型數(shù)據(jù)’B‘,變量c的值等于變量b的值’B‘。*/c=b=a+1;如果a的地址是2000,此時該地址中存放的數(shù)據(jù)是'A';則b的地址是2001,此時該地址中存放的數(shù)據(jù)是'B';則c的地址是2002,此時該地址中存放的數(shù)據(jù)也是'B'。5.6.2

賦值表達式2復合賦值語句*=等價于x=x*y對賦值運算還有下列幾點說明。簡練在C++中還可以連續(xù)賦值,賦值運算符具有右結合性比如:x=y=2.6;//賦值運算符是從右至左計算的,所以表示式相當于:x=(y=2.6),根據(jù)優(yōu)先級,先計算括號里面的賦值語句,再把y的值賦值給x。再有:a=b=3+8;//按照右結合,先計算3+8,然后將11賦給b,再將b的值11賦給a5.6.2

賦值表達式【范例5-2】賦值運算01#include<iostream.h> //包含標準輸入輸出頭文件02voidmain()03{04inta=123,b=3,c=2,d=456,x=2;05c+=a; //等價c=c+a06d%=b; //等價d=d%b07x+=x-=x*x;08cout<<”c=”<<c<<”d=”<<d<<”x=”<<x<<endl;09}5.7

逗號運算符和表達式逗號運算符使用一般形式為表達式1,表達式2,…,表達式n;在C++語言所有運算符中,逗號表達式的優(yōu)先級最低。5.7

逗號運算符和表達

溫馨提示

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

評論

0/150

提交評論