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

下載本文檔

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

文檔簡(jiǎn)介

基本運(yùn)算符和表達(dá)式表達(dá)式算術(shù)運(yùn)算符和表達(dá)式賦值運(yùn)算符不同數(shù)據(jù)類(lèi)型間的轉(zhuǎn)換關(guān)系運(yùn)算符和表達(dá)式邏輯運(yùn)算符和表達(dá)式自增和自減運(yùn)算符逗號(hào)運(yùn)算符和表達(dá)式條件運(yùn)算符和表達(dá)式求字節(jié)運(yùn)算符學(xué)習(xí)重點(diǎn)熟悉幾種常用的運(yùn)算符掌握運(yùn)算符的運(yùn)算規(guī)則3.掌握表達(dá)式求值3.1

表達(dá)式一、表達(dá)式的概念

表達(dá)式是由運(yùn)算符連接常量、變量、函數(shù)所組成的式子。每個(gè)表達(dá)式都有一個(gè)值和類(lèi)型。(a*2)/c

++i

sin(x)+sin(y)5>0&&4>2a=b=c=5二、運(yùn)算符的種類(lèi):據(jù)運(yùn)算對(duì)象的個(gè)數(shù)分有三種:?jiǎn)文?、雙目、三目

①++

①/②

①?②:③C運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:((!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=及其擴(kuò)展)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類(lèi)型轉(zhuǎn)換:(類(lèi)型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)學(xué)習(xí)運(yùn)算符應(yīng)注意:運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類(lèi)型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向結(jié)果的類(lèi)型一、算術(shù)運(yùn)算符:

+-*/%結(jié)合方向:從左向右優(yōu)先級(jí):----->*/%----->+-說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性?xún)烧麛?shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()3.2算術(shù)運(yùn)算符和表達(dá)式例1:#include”stdio.h”main(){printf("\n\n%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);}結(jié)果:2,-22.857143,-2.857143例2:#include”stdio.h”main(){printf("%d\n",100%3);}結(jié)果:13.3

賦值運(yùn)算符一、簡(jiǎn)單賦值運(yùn)算符:=格式:變量=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量

二、復(fù)合賦值運(yùn)算符種類(lèi):+=-=*=/=%=

a+=3a=a+3x*=y+8x=x*(y+8)例a=3;d=func();c=d+2;a+=ba=a+ba-=ba=a-ba*=ba=a*ba/=ba=a/ba%=ba=a%b說(shuō)明:結(jié)合方向:自右向左左側(cè)必須是變量,不能是常量或表達(dá)式優(yōu)先級(jí):比算術(shù)低例3=x-2*y;

a+b=3;

例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表達(dá)式值為5,a,b,c值為5//b=5;a=5//表達(dá)式值11,c=6,a=11//表達(dá)式值10,a=10,b=4,c=6//表達(dá)式值5,a=5,b=10,c=2例:a=12;a+=a-=a*a;//a=-264等價(jià)于a=a+(a=a-(a*a))例:inta=2;a%=4-1;a+=a*=a-=a*=3;

//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3)))例3:#include”stdio.h”main(){inta,b,c,d,x,y,z;a=100;b=45;c=-19;d=94;x=-2;y=5;z=28;a+=6;b-=x;c*=10;d/=x+y;z%=8;printf("\n%6d%6d%6d%6d%6d\n",a,b,c,d,z);}結(jié)果:???106????47??-190????31?????43.4不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換轉(zhuǎn)換有兩種:隱式:計(jì)算機(jī)自動(dòng)進(jìn)行的轉(zhuǎn)換顯式:強(qiáng)制性轉(zhuǎn)換一、隱式轉(zhuǎn)換(4種)運(yùn)算轉(zhuǎn)換------不同類(lèi)型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換------把一個(gè)值賦給與其類(lèi)型不同的變量時(shí)輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類(lèi)型不一致時(shí)轉(zhuǎn)換(1)運(yùn)算轉(zhuǎn)換:不同類(lèi)型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類(lèi)型

數(shù)據(jù)類(lèi)型的級(jí)別floatlongintbitchar低高unsignedsigned轉(zhuǎn)換規(guī)則:當(dāng)運(yùn)算符兩端的數(shù)據(jù)類(lèi)型不同時(shí),按“向高看齊”的原則,對(duì)較低的類(lèi)型提升。10+‘a(chǎn)’+i*f-d/l例inti;floatd,f;longl;intintfloatfloatfloatfloatfloatfloat(2)賦值轉(zhuǎn)換:自動(dòng)將“=”右邊的類(lèi)型轉(zhuǎn)換為左邊變量的類(lèi)型。實(shí)整,舍棄小數(shù)。例:inti;i=375.986;

i=375intfloat,數(shù)值不變,但以浮點(diǎn)形式存到變量中。例:floatf;f=36;

f=36.000000字符整型,將字符的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符變量。例4:#include”stdio.h”main(){inta,b=322,i;floatx,y=8.88;charc1='k',c2;a=y;x=b;i=c1;c2=b;printf("%d,%f,%d,%c",a,x,i,c2);}signedunsigned,原樣照賦例5

#include”stdio.h”main(){unsignedinta;intb=-1;a=b;printf(“%u”,a);}輸出結(jié)果:65535C二、顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)格式:(類(lèi)型名)(表達(dá)式)例(int)(x+y)(int)x+y(float)(3/2)(int)3.6說(shuō)明:強(qiáng)制轉(zhuǎn)換得到所需類(lèi)型的中間變量,原變量類(lèi)型不變例6

#include”stdio.h”

main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3精度損失問(wèn)題較高類(lèi)型向較低類(lèi)型轉(zhuǎn)換時(shí)可能發(fā)生例:floatf;f=6/7;問(wèn):f=?

f=0.8571

f=0.0改為:f=6.0/7

或f=6/7.0或f=(float)6/7類(lèi)型轉(zhuǎn)換時(shí),只贊成低高

不贊成高低

只贊成有符號(hào)數(shù)無(wú)符號(hào)數(shù)

不贊成無(wú)符號(hào)數(shù)有符號(hào)數(shù)3.5

關(guān)系運(yùn)算符和表達(dá)式運(yùn)算符:<<=>>===!=結(jié)合方向:自左向右優(yōu)先級(jí)別:<<=>>=

------>==!=與其它比:算術(shù)關(guān)系賦值例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)關(guān)系表達(dá)式的值:是邏輯值,1(真)0(假)例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=0注意:例若a=0;b=0.5;x=0.3;

則a<=x<=b的值為

0例5>2>7>8在C中是允許的,值為0例inti=1,j=7,a;a=i+(j%4!=0);

則a=2例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為10例注意區(qū)分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);例7:#include”stdio.h”main(){intx,y,z;printf(“inputdatax,y:\n”);scanf(“%d%d”,&x,&y);printf(“\n????x????y??x<y?x<=y??x>y?x>=y?x!=y?x==y”);printf(“\n%5d%5d”,x,y);z=x<y;printf(“%5d”,z);z=x<=y;printf(“%5d”,z);

z=x>y;printf(“%5d”,z);

z=x>=y;printf(“%5d”,z);

z=x!=y;printf(“%5d”,z);z=x==y;printf(“%5d”,z);printf(“\n”);}結(jié)果1:inputdatax,y:5?3回車(chē)

x

y

x<y

x<=y

x>y

x>=yx!=y

x==y

5

3

0

0

1

110結(jié)果2:-inputdatax,y:-5?-3回車(chē)

x

y

x<y

x<=y

x>y

x>=yx!=y

x==y

-5

-3

1

1

0

010結(jié)果1:inputdatax,y:4?4回車(chē)

x

y

x<y

x<=y

x>y

x>=yx!=y

x==y

4

4

0

1

0

101ab!a!ba&&ba||b真假真假假假真真3.6

邏輯運(yùn)算符和表達(dá)式運(yùn)算符:!&&||邏輯運(yùn)算真值表

運(yùn)算量:0(假)

非0(真)

表達(dá)式值:0(假)

1(真)

真假假假假假真真假假真真真假真真例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b優(yōu)先級(jí):結(jié)合方向:!:右左&&:左右||:左右//(a<=x)&&(x<=b)

//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)與其它比:?jiǎn)文克阈g(shù)關(guān)系邏輯賦值!&&||例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值為1值為0值為1值為1值為1值為1值為1特性:與表達(dá)式遇假結(jié)束例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)求m=?n=?//m=0,n=1例a&&b&&c//只在a為真時(shí),才判別b的值;只在a、b都為真時(shí),才判別c的值或表達(dá)式遇真結(jié)束例a||b||c//只在a為假時(shí),才判別b的值;只在a、b都為假時(shí),才判別c的值例8:#include”stdio.h”main(){intx,y,z;printf(“inputdatax,y:\n”);scanf(“%d%d”,&x,&y);printf(“\n????x????y??????!x????x||y????x&&y”);printf(“\n%5d%5d”,x,y);z=!x;printf(“%8d”,z);z=x||y;printf(“%8d”,z);

z=x&&y;printf(“%8d”,z);printf(“\n”);}結(jié)果1:inputdatax,y:12?8回車(chē)

x

y

!x

x||y

x&&y

12

8

0

1

1

結(jié)果2:inputdatax,y:9?-3回車(chē)

x

y

!x

x||y

x&&y

9

-3

0

1

1

結(jié)果3:inputdatax,y:0?81回車(chē)

x

y

!x

x||y

x&&y

0

8

1

1

0

結(jié)果4:inputdatax,y:-23?0回車(chē)

x

y

!x

x||y

x&&y

-23

0

0

1

10

結(jié)果5:inputdatax,y:0?0回車(chē)

x

y

!x

x||y

x&&y

0

0

1

0

0

3.7

自增、自減運(yùn)算符:++--作用:使變量值加1或減1

i++或++ii=i+1i--或--ii=i-1種類(lèi):前綴:++i,--i

先增1(減1),再使用i值后綴:i++

,i--先使用i值,再增1(減1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;

//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4說(shuō)明:不能用于常量和表達(dá)式,如5++,(a+b)++結(jié)合方向:自右向左優(yōu)先級(jí):-++-------->*/%----->+-

例-i++-(i++)i=3;printf(“%d”,-i++);//-3

例inta=5,b;b=a++;printf(“a=%d,b=%d”,a,b);//a=6,b=5例inta=5,b;b=++a;printf(“a=%d,b=%d”,a,b);//a=6,b=6例9:#include”stdio.h”main(){intx,y,z;x=y=8;;z=++x;printf(“\n%3d%3d%3d”,y,z,x);x=y=8;;z=x++;printf(“\n%3d%3d%3d”,y,z,x);x=y=8;;z=--x;printf(“\n%3d%3d%3d”,y,z,x);x=y=8;;z=x--;printf(“\n%3d%3d%3d”,y,z,x);printf(“\n”);}結(jié)果:899

889

877887

3.8

逗號(hào)運(yùn)算符和表達(dá)式形式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):最低表達(dá)式值:等于表達(dá)式n的值用途:常用于循環(huán)for語(yǔ)句中例a=3*5,a*4a=3*5,a*4,a+5例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表達(dá)式值60//a=15,表達(dá)式值20//1,2,3//3,2,3例10:#include”stdio.h”main(){intx,y=7;floatz=4;x=(y=y+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論