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

下載本文檔

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

文檔簡介

第3章表達(dá)式和運(yùn)算符(3).3.5運(yùn)算符和表達(dá)式

3.5.1運(yùn)算符的種類、優(yōu)先級(jí)和結(jié)合性

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

3.5.3賦值運(yùn)算符和賦值表達(dá)式

3.5.4增量運(yùn)算符和增量表達(dá)式

3.5.8逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式.3.5運(yùn)算符和表達(dá)式C運(yùn)算符算術(shù)運(yùn)算符:+-*/%自增自減運(yùn)算符:++--關(guān)系運(yùn)算符:<<===>>=!=邏輯運(yùn)算符:!(邏輯非),&&(邏輯與),||(邏輯或);位運(yùn)算符:~(按位取反),&(位與),|(位或),^(異或),<<(左移),>>(右移);賦值運(yùn)算符:=及其擴(kuò)展賦值運(yùn)算符條件運(yùn)算符:?:逗號(hào)運(yùn)算符:,指針、地址運(yùn)算符:*&求字節(jié)數(shù):sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)成員運(yùn)算符:.->下標(biāo)運(yùn)算符:[]其它:函數(shù)調(diào)用運(yùn)算符()等.運(yùn)算符和表達(dá)式優(yōu)先級(jí)是指表達(dá)式中包含多個(gè)運(yùn)算符時(shí),先進(jìn)行優(yōu)先級(jí)高的運(yùn)算符操作,然后進(jìn)行優(yōu)先級(jí)低的運(yùn)算符操作;當(dāng)表達(dá)式中包含的幾個(gè)運(yùn)算符的優(yōu)先級(jí)全相同時(shí),由運(yùn)算符的結(jié)合性來決定他們的運(yùn)算順序。結(jié)合性:同一優(yōu)先級(jí),自左向右,為左結(jié)合性,反之為右結(jié)合性。初等運(yùn)算符([]、()、.、->)↓單目運(yùn)算符↓算術(shù)運(yùn)算符↓關(guān)系運(yùn)算符↓邏輯運(yùn)算符(不包括邏輯非運(yùn)算符!)↓賦值運(yùn)算符↓逗號(hào)運(yùn)算符.3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式

1、基本的算術(shù)運(yùn)算符:+

(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-

(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*

(乘法運(yùn)算符。如:3*5)/

(除法運(yùn)算符。如:5/3)%

(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。算術(shù)運(yùn)算符的優(yōu)先級(jí)別:*、/、%優(yōu)先于+、?(*、/、%不分),()級(jí)別最高,單目運(yùn)算符優(yōu)先雙目運(yùn)算符如?2?4.算術(shù)運(yùn)算符和算術(shù)表達(dá)式

2、算術(shù)表達(dá)式(1)表達(dá)式由常量、變量、函數(shù)和運(yùn)算符組成的式子稱為表達(dá)式例:計(jì)算圓面積的語句s=3.14159*r*r;該語句中r,3.14159,3.14159*r,3.14159*r*r,s=3.14159*r*r都是表達(dá)式

*是運(yùn)算符,3.14159是常量,s是變量(2)表達(dá)式的求值規(guī)則,按照運(yùn)算符的優(yōu)先級(jí)和結(jié)合性的規(guī)定順序進(jìn)行。一個(gè)表達(dá)式有一個(gè)值及其類型.算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)算術(shù)表達(dá)式是由算數(shù)運(yùn)算符和操作數(shù)組合成的式子,算術(shù)表達(dá)式用于各類數(shù)值運(yùn)算。除求余運(yùn)算符%外,運(yùn)算對象可以是整型,也可以是實(shí)型。如:(-b-sqrt(d))/(2.0*a)運(yùn)算對象包括常量、變量、函數(shù)等。一個(gè)常量、變量都可作為一個(gè)表達(dá)式。例:以下是合法的算術(shù)表達(dá)式:a*b/c-1.5+'a'3*x+1.0/y―10*sqrt(x)

(x+y)%(x+b-c/d)100x.算術(shù)運(yùn)算符和算術(shù)表達(dá)式說明:1)“%”是求余運(yùn)算。a%b計(jì)算a除以b以后的余數(shù),也是a模b的值。它要求兩個(gè)運(yùn)算對象都是整型量,其結(jié)果也是整型量。當(dāng)運(yùn)算量為負(fù)數(shù)時(shí),所得結(jié)果的符號(hào)與被除數(shù)(a)相同。如:17%-3=2-19%4=-3-15%-7=-1

5%1.5是非法的算術(shù)表達(dá)式2)除法運(yùn)算符“/”進(jìn)行求商運(yùn)算。對于不同類型的運(yùn)算對象,除法表達(dá)式計(jì)算結(jié)果的類型也會(huì)不同。例:計(jì)算x/y如果x,y為整型,小數(shù)部分舍去,沒有四舍五入如果x,y中有一個(gè)為實(shí)型量,則x,y都被化為double類型進(jìn)行計(jì)算,結(jié)果為double.算術(shù)運(yùn)算符和算術(shù)表達(dá)式運(yùn)算實(shí)例:x,y為整型量:5/2結(jié)果為2,整型量2/5結(jié)果為0,整型量x,y其中一個(gè)為實(shí)型量5.0/2或5.0/2.0或5.0/2.0結(jié)果為2.5,實(shí)型量.練習(xí):例1/2=-5/2=-5/2.0=例5%2=-5%2=5%-2=1%10=5%1=5.5%2=0-2-2.51-1110

高()+-(正號(hào),負(fù)號(hào))*/%低+-(加,減)例:

a*b/c-1.5+'a'(x+y)%(x+b-c/d)例如(-16/3*2+1)%6的值_______.計(jì)算方法:-16/3值為-5,然后-5*2+l值為-9,最后-9%6值為-3。.算術(shù)運(yùn)算符和算術(shù)表達(dá)式3)雙目運(yùn)算符兩邊的運(yùn)算類型必須一致才能進(jìn)行操作,所得結(jié)果類型與運(yùn)算類型一致;如:1.0/2.0=0.51/2=04)如果類型不一致,系統(tǒng)將自動(dòng)把兩邊轉(zhuǎn)換成相同類型后進(jìn)行運(yùn)算;如:1.0/2=0.51/2.0=0.5

整型轉(zhuǎn)實(shí)型

短整型轉(zhuǎn)長整型

有符號(hào)轉(zhuǎn)無符號(hào)5)C語言中所有實(shí)數(shù)的運(yùn)算均以雙精度方式進(jìn)行,若是單精度數(shù),則在尾數(shù)部分補(bǔ)0,使之轉(zhuǎn)化為雙精度;.例:將數(shù)學(xué)式改寫成算術(shù)表達(dá)式一般數(shù)學(xué)式算術(shù)表達(dá)式[a(b+c)+d]ac(a*(b+c)+d)*a*c3.14159*r*r/2.0x/(x+y)+1.0/x*y算術(shù)運(yùn)算符和算術(shù)表達(dá)式.基本運(yùn)算符實(shí)例基本運(yùn)算符實(shí)例:main(){inta,b,c1,c2;a=3,b=7;

c1=b/a;c2=b%a;printf(“c1=%d\tc2=%d\n”,c1,c2);

c1=a/b;c2=a%b;printf(“c1=%d\tc2=%d\n”,c1,c2);}.標(biāo)準(zhǔn)庫函數(shù)調(diào)用對于某些數(shù)學(xué)運(yùn)算,如求平方根,指數(shù),對數(shù)運(yùn)算,C語言中有標(biāo)準(zhǔn)庫函數(shù)對其進(jìn)行計(jì)算。調(diào)用格式:函數(shù)名(參數(shù),參數(shù),····)其中函數(shù)名由系統(tǒng)提供,不同C編譯系統(tǒng),提供的函數(shù)名不同,使用時(shí)需查閱相關(guān)手冊。調(diào)用函數(shù)時(shí),參數(shù)的類型必須與系統(tǒng)規(guī)定一致調(diào)用標(biāo)準(zhǔn)庫函數(shù)之前,通常要用預(yù)編譯命令“#includemath.h”將所需要的庫函數(shù)信息包含到用戶源文件中.使用數(shù)學(xué)庫函數(shù)在使用數(shù)學(xué)庫函數(shù)以前,需使用編譯命令#include“math.h”例:計(jì)算x(2+xy)的值#include“math.h”main(){doublex,y;x=5.0;y=7.0;printf(“z=%f\n”,x*(2.0+pow(x,y)));}.算術(shù)表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換3、各類型數(shù)值數(shù)據(jù)的轉(zhuǎn)換當(dāng)表達(dá)式中的各類數(shù)值型數(shù)據(jù)參與混合運(yùn)算時(shí),要進(jìn)行類型轉(zhuǎn)換下面表達(dá)式合法:1+3.14159+’0’+’A’轉(zhuǎn)換方式自動(dòng)轉(zhuǎn)換:數(shù)據(jù)類型自動(dòng)由低級(jí)向高級(jí)轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換:將表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型。.算術(shù)表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換自動(dòng)轉(zhuǎn)換規(guī)則:floatdoublelongunsignedintCharshort低高自動(dòng)自動(dòng).算術(shù)表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換10+‘a(chǎn)’+i*f-d/e例:

inti;floatf;doubled;longe;intintdoubledoubledoubledoubledoubledouble.練習(xí):1.若有定義:inta;則語句a=(4*5)+4%5;運(yùn)行后,a的值為()2.設(shè)double型變量a,b,c,e均有值;對代數(shù)式(3ae)/(bc),不正確的C語言表達(dá)式是()。(A)a/b/c*e*3(B)3*a*e/b/c(C)3*a*e/b*c(D)a*e/c/b*33.P593.33.4.3.5.3賦值運(yùn)算符和賦值表達(dá)式1、賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式的一般格式為:變量=表達(dá)式說明:

1)賦值運(yùn)算符左邊必須是變量而不能是常量或表達(dá)式,右邊是合法的c語言表達(dá)式;例:j+3=ja*b=c*45=xx+1=y*a+3錯(cuò)誤

2)賦值表達(dá)式的值是賦值號(hào)左邊變量被賦值后的值;正確的表示形式:x=10x=yn=n+1

3)賦值語句可以連續(xù)進(jìn)行a=b=7+1等價(jià)于a=(b=(c=0)

.賦值運(yùn)算符和賦值表達(dá)式2、復(fù)合的賦值表達(dá)式算術(shù)運(yùn)算符“+-*/%”和賦值運(yùn)算符”=“結(jié)合+=:a+=b+3,等價(jià)于a=a+(b+3)-=:

a-=b+3,等價(jià)于a=a-(b+3)*=:a*=b+3,等價(jià)于a=a*(b+3)/=:a/=b+3,等價(jià)于a=a/(b+3)%=:a%=b+3,等價(jià)于a=a%(b+3)

>>=,<<=,&=,^=,|=.賦值運(yùn)算符和賦值表達(dá)式注意:1)復(fù)合運(yùn)算符左邊必須是變量2)復(fù)合運(yùn)算符右邊的表達(dá)式計(jì)算完成后才參與復(fù)合賦值運(yùn)算3)復(fù)合運(yùn)算符的結(jié)合性和優(yōu)先級(jí)等同于簡單賦值運(yùn)算符”=”4)復(fù)合運(yùn)算符常用于某個(gè)變量自身的變化,尤其是當(dāng)左邊的變量名很長時(shí),使用復(fù)合運(yùn)算符書寫更方便。書寫時(shí),兩個(gè)運(yùn)算符之間不能有空格。5)C語言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=.賦值運(yùn)算符和賦值表達(dá)式3、賦值類型轉(zhuǎn)換如果賦值號(hào)兩邊的類型不一致,則將賦值號(hào)右邊表達(dá)式的值的類型轉(zhuǎn)換成賦值號(hào)左邊變量的類型;例:floatf=1.0inta=2,b=3;charc=‘A’;f=a+b+c;(f為實(shí)型量,結(jié)果為70.0).賦值結(jié)果與類型轉(zhuǎn)換說明:

1)實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。如:設(shè)i為整型變量,執(zhí)行i=5.34,i的值為52)整型數(shù)據(jù)賦給實(shí)型變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中。如:對float型變量f,執(zhí)行f=23f的值為23.0000003)double賦給float型變量時(shí),截取其前面7位有效數(shù)字,存儲(chǔ)到float型變量的存儲(chǔ)單元;float型變量賦給double時(shí),有效位擴(kuò)展到16位,在內(nèi)存中以8個(gè)字節(jié)存儲(chǔ).賦值結(jié)果與類型轉(zhuǎn)換例:voidmain(){ inti; floatf; i=5.34; f=23; printf("i=%d,f=%f\n",i,f);}結(jié)果:i=5,f=23.000000.賦值結(jié)果與類型轉(zhuǎn)換4)char、int、long等類型的轉(zhuǎn)換①“短”數(shù)據(jù)賦給“長”變量符號(hào)擴(kuò)展:若最高位為1(負(fù)數(shù)),則變量高字節(jié)位補(bǔ)1;反之,補(bǔ)0。voidmain(){ charc; shortinti; c=43; i=c; printf("i=%hd\n",i); c='\376';i=c; printf("i=%hd\n",i);}c的值?43-2.賦值結(jié)果與類型轉(zhuǎn)換0010101143號(hào)字符'+''\53'0010101100000000i11111110254號(hào)字符'\376'1111111011111111i.賦值結(jié)果與類型轉(zhuǎn)換②“長”數(shù)據(jù)賦給“短”變量截?cái)啵褐粚?shù)據(jù)的低字節(jié)位原封不動(dòng)送到變量中voidmain(){shortinti;longl=6324232L;i=l;printf("i=%hd\n",i);}0000000000010001i=-3276010000000000010000000000001100000l=6324232.賦值結(jié)果與類型轉(zhuǎn)換5)無符號(hào)整型與有符號(hào)整型例:voidmain(){ unsigneda; intb=-1; a=b; printf("%d->%u\n",b,a); a=65534u;b=a; printf("%d->%u\n",b,a);}1111111111111111b1111111111111111a結(jié)果:-1->65535-2->65534.賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。一般形式為:

<變量><賦值運(yùn)算符><表達(dá)式>

例如:“a=5”是一個(gè)賦值表達(dá)式.賦值運(yùn)算符和賦值表達(dá)式對賦值表達(dá)式求解的過程是:①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量。例如:賦值表達(dá)式“a=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。注意:

一個(gè)表達(dá)式應(yīng)該有一個(gè)值左值(lvalue)

:賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符變量可以作為左值;而表達(dá)式就不能作為左值(如a+b);常量也不能作為左值,.賦值運(yùn)算符和賦值表達(dá)式請分析下面的賦值表達(dá)式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12??梢钥吹健?a=3*5)出現(xiàn)在賦值運(yùn)算符的左側(cè),因此賦值表達(dá)式(a=3*5)是左值注意:在對賦值表達(dá)式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5不能寫成:a=3*5=4*3.賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。

如:a+=a-=a*a分析:此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a”的運(yùn)算,相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。.賦值運(yùn)算符和賦值表達(dá)式[補(bǔ)充例題]main(){inti=5;i+=i*=i+6;printf("i=%d\n",i);}分析表達(dá)式i+=i*=i+6的執(zhí)行過程:結(jié)合方向是"從右到左",先計(jì)算i+6的值為11;計(jì)算后i的值不變?nèi)詾?;再計(jì)算i*=11,相當(dāng)于i=i*11,因此i=5*11,i的值變成55;最后計(jì)算i+=55,相當(dāng)于i=i+55,因此i=55+55,i的值最后變成110。.賦值運(yùn)算符和賦值表達(dá)式[補(bǔ)充例題]main(){inti=-5,j=0x9961,k;unsignedintu;

unsignedcharch;u=i;ch=j;k=ch;printf("u=%x,u=%u,ch=%c,k=%d\n",u,u,ch,k);}運(yùn)行結(jié)果:u=fffb,u=65531,ch=a,k=97.賦值運(yùn)算符和賦值表達(dá)式例:賦值語句程序?qū)嵗齧ain(){inta,b,c;

a=b=c=9;printf(“a=%d,b=%d,c=%d\n”,a,b,c);

a=(b=4)+(c=6);printf(“a=%d,b=%d,c=%d\n”,a,b,c);

a+=b+c;printf(“a=%d,b=%d,c=%d\n”,a,b,c);

a+=a-=a*=a;a+=a-=a+a;

printf(“a=%d\n”,a);}

999104620460.賦值運(yùn)算符和賦值表達(dá)式4、強(qiáng)制類型轉(zhuǎn)換格式:(數(shù)據(jù)類型說明符)(表達(dá)式)注意:1)強(qiáng)制轉(zhuǎn)換屬單目運(yùn)算,運(yùn)算優(yōu)先級(jí)為22)強(qiáng)制轉(zhuǎn)換得到的是中間變量類型,原變量類型不變。例:intx,y;floatz;(float)(x+y);(int)z+x;例:(double)1/2的值為0.5,因?yàn)?double)1將整型數(shù)1轉(zhuǎn)換成1.0(雙精度類型),1.0/2值為0.5。.賦值運(yùn)算符和賦值表達(dá)式例3.11強(qiáng)制類型轉(zhuǎn)換。

#include"stdio.h"main(){floatx;inti;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);}.3.5.4增量運(yùn)算符和增量表達(dá)式1、自增、自減運(yùn)算符作用:自增運(yùn)算符++:使變量的值增1自減運(yùn)算符--:使變量的值減12、兩種形式前綴形式:++i,--i(在使用i之前,先使i的值加1(減1))后綴形式:i++,i--(在使用i之后,再使i的值加1(減1)).增量運(yùn)算符和增量表達(dá)式例:j=++i;j=i++;等價(jià)于等價(jià)于

j=i+1;j=i;i=i+1;i=i+13、結(jié)合方向與優(yōu)先級(jí):++,--的結(jié)合方向:從右至左++,--的優(yōu)先級(jí):高++--*/%低+-例:intj=5,i=1,k,n;n=-++i;k=--j*2;-28.增量運(yùn)算符和增量表達(dá)式

例:若i=1;j=++i;則j的值為2(i先加) 若i=1;j=i++;則j的值為1(i后加)運(yùn)算符和運(yùn)算對象的關(guān)系有"結(jié)合方向"如:若i=1;j=-i++;則j的值為-1。(i后加,i的值為2)負(fù)號(hào)與++,-

溫馨提示

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

最新文檔

評論

0/150

提交評論