運算符與表達式課件_第1頁
運算符與表達式課件_第2頁
運算符與表達式課件_第3頁
運算符與表達式課件_第4頁
運算符與表達式課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.4運算符與表達式

運算符在C語言進行數(shù)據(jù)加工,執(zhí)行程序代碼的運算。

C語言提供了以下十種運算符:(1)算術(shù)運算符:+-*/%++--(2)關(guān)系運算符:><==>=<=!=(3)邏輯運算符:&&||!(4)位操作運算符:&|~^<<>>(5)賦值運算符:=+=-=*=/=%=

&=|=^=>>=<<=(6)條件運算符:?:(7)逗號運算符:,(8)指針運算符:*&(9)求字節(jié)數(shù)運算符:sizeof(10)特殊運算符:()[]→,.

在本章中主要介紹算術(shù)運算符與算術(shù)表達式,關(guān)系運算符和關(guān)系表達式,邏輯運算符與邏輯表達式,賦值運算符與賦值表達式,條件運算符與條件表達式,逗號運算符與逗號表達式2.4.1算術(shù)運算符與算術(shù)表達式運算符名稱使用方式說明+加a+b做a加b-減a-b做a減b*乘a*b做a乘以b/除a/b做a除以b%取模a%ba取模b(返回余數(shù))++自增++a先自增1,再應用a++先應用,再自增1--自減--a先自減1,再應用a--先應用,再自減1適應范圍:算術(shù)運算操作數(shù):數(shù)值型或字符型【例2-7】除法和求余運算符示例程序。#include<stdio.h>voidmain(){printf("\n\n%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);printf("%d\n",100%3);}分析:20/7,-20/7的結(jié)果均為整型,小數(shù)全部舍去。而20.0/7和-20.0/7由于有實數(shù)參與運算,因此結(jié)果也為實型。100除以3所得的余數(shù)1。2、算術(shù)表達式和運算符的優(yōu)先級和結(jié)合性(1)算術(shù)表達式:用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的,符合C語法規(guī)則的式子。(2)運算符的優(yōu)先級:C語言中,運算符的運算優(yōu)先級共分為15級。1級最高,15級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級相同時,則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。

算術(shù)運算符的優(yōu)先級是:++,--優(yōu)先級最高,然后是*,/,%,最后是+,-(3)運算符的結(jié)合性:C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。3、自增、自減運算符

單目算術(shù)運算符“++”“--”的前綴與后綴方式,對操作數(shù)本身的值的影響是相同的,但其對表達式的值的影響是不同的。前綴方式是先將操作數(shù)加(或減)1,再將操作數(shù)的值作為算術(shù)表達式的值;后綴方式是先將操作數(shù)的值作為算術(shù)表達式的值,再將其加(或減)1。注意:自增運算符和自減運算符的運算對象只能是變量,不能是常量或表達式。形式3++或++(i+j)都是非法的表達式,因為3是常量,常量的值是不能變的;++(i+j)也是不能實現(xiàn)的,因為假設i+j的值為10,那么自增后得到的11放在什么地方呢?無變量單元可供存放?!纠?-8】自增自減綜合應用。#include<stdio.h>voidmain(){inti=5;printf("%d\n",++i); printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);}分析:i的初值為5,第2行i加1后輸出故為6;第3行減1后輸出故為5;第4行輸出i為5之后再加1(為6);第5行輸出i為6之后再減1(為5);第6行輸出-5之后再加1(為6),第7行輸出-6之后再減1(為5)。2.4.2關(guān)系運算符與關(guān)系表達式

1、關(guān)系運算符關(guān)系運算符用來對兩個操作數(shù)進行比較。運算過程為:如果關(guān)系表達式成立,結(jié)果為真(true),否則為假(false)。由于C語言沒有邏輯型數(shù)據(jù),就用1代表“真”,0代表“假”。2、優(yōu)先級(1)“<”、“<=”、“>”和“>=”為同一級,“==”和“!=”為同一級。前者優(yōu)先級高于后者。(2)關(guān)系運算符優(yōu)先級低于算術(shù)運算符,高于賦值運算符和逗號運算符。3、關(guān)系表達式關(guān)系表達式就是用關(guān)系運算符將兩個表達式連接起來的式子。關(guān)系表達式的一般形式為:表達式關(guān)系運算符表達式2.4.2關(guān)系運算符與關(guān)系表達式

1.適用范圍:兩個操作數(shù)比較大小

2.結(jié)果:1或01為true;0為false

3.關(guān)系運算符運算符名稱使用方式說明==等于a==b同級低級!=不等于a!=b>大于a>b同級高級<小于a<b<=小于等于a<=b>=大于等于a>=b4.關(guān)系運算符的優(yōu)先級(1)關(guān)系運算符:>、<、>=、<=:同級,高于==、!=

(2)關(guān)系運算符低于算術(shù)運算符、高于賦值運算符和逗號運算符【例2.10】關(guān)系表達式的運用

#include<stdio.h>voidmain(){ charch='w'; inta=2,b=3,c=1,d,x=10; printf("%d",a>b==c); printf("%d",d=a>b); printf("%d",ch>'a'+1); printf("%d",d=a+b>c); printf("%d",b-1==a!=c); printf("%d\n",3<=x<=5);}運行:001111分析表達式:3<=x<=5的弊病

3<=x<=5

因不管x為何值,3<=x始終非0即1,而0或0肯定小于5,所以此表達式達不到判斷目的2.4.3邏輯運算符與邏輯表達式1、邏輯運算符邏輯運算符應用于邏輯運算,其運算符有:與(&&)、或(||)、非(!),其中&&和||是雙目運算符,!是單目運算符。邏輯運算的結(jié)果只有兩個:1(邏輯真),0(邏輯假)?!罢妗?,0代表“假”。2、優(yōu)先級(1)!的優(yōu)先最高;(2)&&和||的優(yōu)先級低于算數(shù)運算符和關(guān)系運算符,但是高于賦值運算符。3、邏輯表達式將常量、變量、函數(shù)等通過邏輯運算符連接起來組成的表達式稱為邏輯表達式,邏輯表達式的一般形式為:表達式邏輯運算符表達式2.4.3邏輯運算符與邏輯表達式

1.適用范圍:對關(guān)系表達式進行運算

2.結(jié)果:布爾邏輯值1或01為true;0為false

3.邏輯運算符(由低到高)運算符名稱運算符名稱運算符名稱||邏輯或&&邏輯與!邏輯非aba&&ba||b!a!b0000110101101001011111004.邏輯運算真值表5.邏輯運算符的優(yōu)先級:(1)!——&&——||

(2)?。焊哂谒阈g(shù)運算符;&&、||低于關(guān)系運算符【例2-11】用表達式描述下列條件。(1)x是5的倍數(shù) (2)x是奇數(shù) (3)’A’<=x<=’Z’(4)x能同時被5和7整除 (1)表達式為:x%5==0(2)表達式為:x%2==1或x%2!=0(3)表達式為:x>=’A’&&x<=’Z’(4)表達式為:x%5==0&&x%7==0【例2.12】邏輯表達式的運用#include<stdio.h>voidmain(){ inta=2,b=0,c=0; printf("%d",a&&b); printf(“%d”,a||b&&c); printf(“%d”,!a&&b); printf(“%d\n”,(a=1)||(b=3)+10&&(c=2));}運行結(jié)果:0101

熟練掌握C語言的關(guān)系運算和邏輯運算符后,可以巧妙地用一個邏輯表達式來表示一個復雜的條件。例如,要判別用year表示某一個是否這閏年。閏年的條件是符合下面二個條件之一:

①能被4整除,但不能被100整除,如2008;

②能被4整除,又能被400整除,如2000。可以用一個邏輯表達式來表示:

(year%4==0&&year%100!=0)||year%400==0如果上述表達式值為真(1),則year為閏年,否則year為非閏年。2.4.4賦值運算符與賦值表達式

1.普通賦值運算符:=2.賦值表達式格式:變量=表達式

3.復合賦值運算符運算符名稱使用方式說明+=加賦值a+=ba=a+b-=減賦值a-=ba=a-b*=乘賦值a*=ba=a*b/=除賦值a/=ba=a/b%=取模賦值a%=ba=a%b1、簡單賦值運算符(1)符號:=(2)格式:變量標識符=表達式(3)作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量

如:x=152、賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子。賦值表達式中的“表達式”,又可以是一個賦值表達式。說明:(1)結(jié)合方向:自右向左。(2)優(yōu)先級:低于算術(shù)運算符、關(guān)系運算符、邏輯運算符。(3)左側(cè)必須是變量,不能是常量或表達式。(4)賦值表達式的值與變量值相等,且可嵌套。例如:a=3//將常量3賦值給變量ad=func()//將函數(shù)func的返回值賦值給變量da=b=5//遵循右結(jié)合規(guī)則,等價于a=(b=5)a=b=10+c//將10+c的值賦值給b,再將b的值賦值給變量ac=3*d+2//將算數(shù)表達式的值賦值給變量cx=6<y//將關(guān)系表達式的值賦值給變量xx=x&&y//將邏輯表達式的值賦值給變量xa=5+c=6//錯誤,可改為a=5+(c=6)a=b=4+c=6//錯誤,不等價于a=b=4+(c=6)a=b=10/c=2//錯誤,不等價于a=(b=10)/(c=2)3、復合賦值運算符(1)種類:+=-=*=/=%=《=》=&=^=|=(2)含義:exp1op=exp2等價于exp1=exp1opexp2例如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8),而不是x=x*y+8x%=5等價于x=x%5

例2-13:a=12

;則表達式a+=a-=a*a的值是多少?分析計算步驟:①“a-=a*a”等價于“a=a-a*a”,計算可得a的值為12-144=-132。②“a+=-132”等價于“a=a+(-132)”,計算可得a的值為-132-132=-264。因此,表達式a+=a-=a*a的值為264。

例2-14:inta=2;a%=4-1;則表達式a+=a*=a-=a*=3的值是多少?分析計算步驟:①“a%=4-1;”等價于“a=a%3”,計算可得

a的值為2。②“a*=3”等價于“a=a*3”,計算可得a的值為6。③“a-=6”等價于“a=a-6”,計算可得a的值為0。④“a*=0”的運算中,a的值為0。⑤再進行“a+=0”的運算中,a的值為0。因此,表達式a+=a*=a-=a*=3的值為0。2.4.5條件運算符與條件表達式

條件運算符由“?”和“:”兩個字符組成,用來連接3個運算對象,是C語言中唯一的三目運算符。 用條件運算符將運算對象連接成的式子稱為條件表達式。其中運算對象可以是算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式和條件表達式。條件表達式的一般形式為:<表達式1>?<表達式2>:<表達式3>

條件運算符的執(zhí)行過程:先求解表達式1的值,若表達式1的值為真,則求解表達式2的值,且作為整個條件表達式的結(jié)果;若表達式1的值為假,則求解表達式3的值,且作為整個條件表達式的結(jié)果。2.4.5條件運算符與條件表達式

條件運算符由“?”和“:”兩個字符組成,用來連接3個運算對象,是C語言中唯一的三目運算符。用條件運算符將運算對象連接成的式子稱為條件表達式。其中運算對象可以是算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式和條件表達式。1、一般形式:<表達式1>?<表達式2>:<表達式3>

2、功能:計算表達式1的值,如果為非0,則計算表達式2的值,并將其作為整個條件表達式的值;否則計算表達式3的值,并將其作為真?zhèn)€條件表達式的值。3、說明:

①優(yōu)先級:高于賦值運算符和逗號運算符,而低于其他運算符。

例如:m<n?x:a+3等價于m<n?x:(a+3)而不是等價于(m<n?x:a)+3

min=x<y?x:y等價于min=(x<y?x:y)

②條件運算符可嵌套。例如:x>0?1:(x<0?-1:0)

③結(jié)合方向:條件運算符具有右結(jié)合性,當一個表達式中出現(xiàn)多個條件運算符時,應該將位于左右邊的問號與離它最近的冒號配對,并按這一原則正確區(qū)分條件運算符的運算對象。例如:a>b?a:c>d?c:d等價于a>b?a:(c>d?c:d)【例2-15】a=5,b=9,c=6,則max=a>b?a:b>c?b:c為多少?分析:表達式a>b?a:b>c?b:c

等價于a>b?a(b>c?b:c)由于a>b的值為假,所以求整個表達式的值只需求b>c?b:c的值;而b>c的值為真,所以b>c?b:c的值為b,因此max的值為9?!纠?-16】輸入兩個數(shù),求其中較大的數(shù)和較小的數(shù)。#include<stdio.h>voidmain(){intx,y,max,min;scanf("%d%d",&x,&y);min=x<y?x:y;max=x>y?x:y;printf("max=%d,min=%d\n",max,min);}如果程序運行時輸入的兩個數(shù)分別為15和37,則程序執(zhí)行結(jié)果為:max=37,min=152.4.6逗號運算符與逗號表達式

在C語言中逗號“,”也是一種運算符,稱為逗號運算符。用它將兩個式子連接起來,稱為逗號表達式。逗號表達式的一般形式為:表達式1,表達式2

逗號表達式的求解過程是:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。(1)逗號

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論