第3講 運(yùn)算符和表達(dá)式_第1頁(yè)
第3講 運(yùn)算符和表達(dá)式_第2頁(yè)
第3講 運(yùn)算符和表達(dá)式_第3頁(yè)
第3講 運(yùn)算符和表達(dá)式_第4頁(yè)
第3講 運(yùn)算符和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

char類型數(shù)據(jù)作為整數(shù)使用范圍0-255(無(wú)符號(hào))-128-127(有符號(hào))。unsignedcharc;charc;思考

閱讀下面的程序,分析其功能,修改其中的錯(cuò)誤。

#include<stdio.h>voidmain{A,B,C;A+B=5;printf(“A+B=,C=”,a,b,c);}2.3運(yùn)算符和表達(dá)式教學(xué)要求:1.掌握各種數(shù)據(jù)運(yùn)算的運(yùn)算符的運(yùn)算。2.掌握各種運(yùn)算符的優(yōu)先級(jí)、結(jié)合方向。3.掌握各種表達(dá)式的書寫方法。4.掌握混合運(yùn)算時(shí)的類型轉(zhuǎn)換規(guī)則。數(shù)學(xué)中的式子:3+5*6sinA+sinB運(yùn)算符操作數(shù)2.3.1概述1.什么是表達(dá)式由運(yùn)算符和操作數(shù)組成的式子是表達(dá)式。不同類型的表達(dá)式按不同運(yùn)算規(guī)則進(jìn)行計(jì)算。2運(yùn)算符的分類(P49,表3-7)按運(yùn)算符要求運(yùn)算對(duì)象的個(gè)數(shù)分類:?jiǎn)文窟\(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符。按其數(shù)據(jù)操作功能分類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、C的特殊運(yùn)算符。

2.3.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符:

+ - * / %

加減乘除整除取余算術(shù)表達(dá)式:

由算術(shù)運(yùn)算符和括號(hào)將運(yùn)算符對(duì)象連接起來(lái)的,符合C語(yǔ)法規(guī)則的式子。如:a*b/c-1.5+’a’運(yùn)算對(duì)象:數(shù)值變量、常數(shù)、函數(shù)、表達(dá)式等算術(shù)表達(dá)式注意事項(xiàng)注意事項(xiàng):(1)/:若兩側(cè)為整形,則其結(jié)果為整形,如果兩個(gè)操作數(shù)中有一個(gè)是實(shí)數(shù),則運(yùn)算結(jié)果為實(shí)數(shù)。

5/2=25/-2=-2-5/2=-21.0/3=0.333333

自動(dòng)類型轉(zhuǎn)換同種數(shù)據(jù)類型的運(yùn)算結(jié)果,還是該類型不同種數(shù)據(jù)類型的運(yùn)算結(jié)果,是兩種類型中取值范圍更大的那種long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short精度低精度高注意以下式子:1/2*4/3算術(shù)運(yùn)算中分母一定不能為0!!!!!算術(shù)表達(dá)式注意事項(xiàng)(2)%:條件:兩側(cè)均為整形。

5%2=15%-2=1-5%2=-1(3)C語(yǔ)言算術(shù)表達(dá)式的乘號(hào)(*)不能省略。例如:數(shù)學(xué)式b2-4ac,相應(yīng)的C表達(dá)式應(yīng)該寫成:

b*b-4*a*c。

2.3.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式3+3*4=15or=24優(yōu)先級(jí):

高:*,/,%,

低:+,-結(jié)合性:從左至右(左結(jié)合性)2.5+3+3*4=?2.3.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.5+3+3*417.52.5+3+125.5+12=17.5

例算術(shù)表達(dá)式(教材P41)#include"stdio.h"voidarithExp(){inta=1,b=2;floatc=1.0,d=2.0;printf("a/b=%d\n",a/b);printf("c/d=%f\n",c/d);printf("a/d=%f\n",a/d);printf("a+b/c+d=%f\n",a+b/c+d);printf("a%%b=%d\n",a%b);}voidmain(){arithExp();}2.3.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符:

><==>=<= !=

大于小于等于大于等于小于等于不等于關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子。計(jì)算結(jié)果是一個(gè)整形值,非邏輯值(“真”和“假”);用0代表假,1代表真;優(yōu)先級(jí):{>,>=,<,<=}高于{==,!=}

關(guān)系運(yùn)算符<算術(shù)運(yùn)算符運(yùn)算對(duì)象:算術(shù)、關(guān)系、賦值、字符表達(dá)式運(yùn)算規(guī)則

例如,a=3,b=5;a>=b,結(jié)果為0a<b,結(jié)果為1

a==b,結(jié)果為0

a!=b,結(jié)果為1結(jié)合性:從左到右。2.3.4邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符:

&&(與)||(或)?。ǚ牵┻壿嫳磉_(dá)式:由邏輯運(yùn)算符組成的表達(dá)式。計(jì)算結(jié)果:是一個(gè)整形值,非邏輯值(“真”和“假”);用0代表假,1代表真。(教材P43表3-6)操作數(shù):基本類型或指針類型優(yōu)先級(jí):!>&&>||

(低)||、&&

->關(guān)系運(yùn)算->算術(shù)運(yùn)算->?。ǜ撸﹫?zhí)行:不是所有的邏輯運(yùn)算符都被執(zhí)行,而是在執(zhí)行下一個(gè)運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。(p43)實(shí)例ch是英文大寫字母(ch>='A')&&(ch<='Z')判斷某一年year是否是閏年的條件是滿足下列兩個(gè)條件之一:能被4整除,但不能被100整除;能被400整除;((year%4==0)&&(year%100!=0))||(year%400==0)2.3.5賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符“=”:格式:變量=表達(dá)式;結(jié)合性:右結(jié)合如,i=4;i=j;i=3+4*5;i=max(a,b);復(fù)合賦值運(yùn)算符:

+=、-=、*=、/=、%=、>>=、<<=

格式:Vop=e

等價(jià)于:V=Vope

例如:a+=5,等價(jià)于a=a+5x*=y+8等價(jià)于x=x*(y+8)例3-5:賦值表達(dá)式求值。(1)x=(y=12)/4y值為12,x值為3,表達(dá)式的值為3(2)x=y=12/4y值為3,x值為3,表達(dá)式的值為3(3)x=(y=12/4)(y值為3,x值為3,表達(dá)式的值為3(4)(x=y)=12/4該賦值運(yùn)算符左邊不是變量,而是一個(gè)表達(dá)式×自動(dòng)類型轉(zhuǎn)換在進(jìn)行賦值操作時(shí),會(huì)發(fā)生類型轉(zhuǎn)換將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無(wú)事但是,浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會(huì)丟失小數(shù)部分,非四舍五入教材P44說(shuō)明強(qiáng)制類型轉(zhuǎn)換運(yùn)算符一般形式:(類型名)(表達(dá)式);表達(dá)式要用括號(hào)括起來(lái)。如1:(double)a;(int)(x+y);如2:inti1=1,i2=2;floatf1;f1=(float)i1/i2;//結(jié)果f1為0.5注意:強(qiáng)制類型轉(zhuǎn)換只是臨時(shí)轉(zhuǎn)換,原來(lái)變量的類型沒(méi)有發(fā)生變化。例2.7#include<stdio.h>main(){

intm=5;

printf("m/2=%d\n",m/2);

printf("(float)(m/2)=%f\n",(float)(m/2));

printf("(float)m/2=%f\n",(float)m/2);

printf("m=%d\n",m);}m/2=2(float)(m/2)=2.000000(float)m/2=2.500000m=5兩個(gè)整數(shù)運(yùn)算的結(jié)果還是整數(shù),不是浮點(diǎn)數(shù)2.3.6自增與自減運(yùn)算符++i,--i先增(減)1,再使用ii++,i--先使用i,再增(減)1例:(2)j=i++;若i的初始值為3(1)j=++i;i=4;j=4;i=4;j=3;結(jié)合性:自右向左例:i=2;j=-i++;分析:(1)++、--、+(正號(hào))、-(取負(fù))是同級(jí)運(yùn)算符,結(jié)合方向:自右向左。(2)-i++等價(jià)于-(i++)(3)對(duì)于括號(hào)內(nèi)的自增運(yùn)算,又要先使用i,再使i增加1。運(yùn)算結(jié)果:i的值為3,j的值為-2。++、--示例p46#include"stdio.h"voidincDec(){intintegeri=5,integerj=5,integerp,integerq;integerp=(integeri++)+(integeri++)+(integeri++); /*integeri參與運(yùn)算后,integeri的值再自增1*/integerq=(++integerj)+(++integerj)+(++integerj);/*j自增1后,再參與其他的運(yùn)算*/printf("%d,%d,%d,%d\n",integerp,integerq,integeri,integerj);}voidmain(){incDec();}2.3.7條件運(yùn)算符與條件表達(dá)式有兩個(gè)符號(hào):?、:,它與三個(gè)操作數(shù)組成三元運(yùn)算。一般形式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>求值規(guī)則和表達(dá)式的值:求解表達(dá)式1真(非0)求解表達(dá)式2假(0)求解表達(dá)式3表達(dá)式的值優(yōu)先級(jí):邏輯>條件>賦值結(jié)合性:

自右至左此種表達(dá)式切忌用得過(guò)于繁雜if(a>b)z=a;else

z=b;z=(a>b)?a:b;2.3.9逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式形式:逗號(hào)表達(dá)式1,逗號(hào)表達(dá)式2,…,逗號(hào)表達(dá)式n求值規(guī)則:從左至右依次計(jì)算各表達(dá)式的值優(yōu)先級(jí)最低結(jié)合性:自左至右表達(dá)式的值最后一個(gè)表達(dá)式的值。例3-7:逗號(hào)表達(dá)式的值。

aby

逗號(hào)表達(dá)式

y=a=4,b=5,a+b;4549y=(a=4,b=5,a+b);4599y=(a=4,b=5),a+b;4559y=a=(4,b=5),a+b;55510注意:C語(yǔ)言常用逗號(hào)作為分隔符,例如:

inta=3,b=4,c=5;printf("%d,%d,%d",(a,b,c));printf("%d,%d,%d",a,(a,b,c),c);2.4不同類型數(shù)據(jù)之間的混合運(yùn)算C語(yǔ)言允許不同類型的數(shù)據(jù)進(jìn)行運(yùn)算,但在運(yùn)算前要進(jìn)行類型轉(zhuǎn)換(自動(dòng))。c+x*y=?1.6(double)65(int)2(int)3.2(double)68.2(double)例3-10:數(shù)據(jù)類型轉(zhuǎn)換intx=2;floaty=1.6;charc='A';2.5運(yùn)算符的優(yōu)先級(jí)

當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),表達(dá)式的求值運(yùn)算按運(yùn)算符的優(yōu)先級(jí)別從高到低的順序執(zhí)行。在C語(yǔ)言中,將44種運(yùn)算符的優(yōu)先級(jí)從高到低共分為15個(gè)等級(jí)。如表2.1所示。

初等運(yùn)算符 (

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論