程序設(shè)計(jì)基礎(chǔ)運(yùn)算符和表達(dá)式課件_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)運(yùn)算符和表達(dá)式課件_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)運(yùn)算符和表達(dá)式課件_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)運(yùn)算符和表達(dá)式課件_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)運(yùn)算符和表達(dá)式課件_第5頁(yè)
已閱讀5頁(yè),還剩71頁(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)介

計(jì)算機(jī)及程序設(shè)計(jì)概述運(yùn)算符與表達(dá)式計(jì)算機(jī)及程序設(shè)計(jì)概述運(yùn)算符與表達(dá)式運(yùn)算符C語(yǔ)言用于描述對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的特殊符號(hào)C語(yǔ)言具有豐富而繁多的運(yùn)算符由運(yùn)算符構(gòu)成了各種表達(dá)式分類C語(yǔ)言的運(yùn)算符按其在表達(dá)式中與運(yùn)算對(duì)象的關(guān)系單目運(yùn)算一個(gè)運(yùn)算符連接一個(gè)運(yùn)算對(duì)象雙目運(yùn)算一個(gè)運(yùn)算符連接兩個(gè)運(yùn)算對(duì)象三目運(yùn)算一個(gè)運(yùn)算符連接三個(gè)運(yùn)算對(duì)象

2運(yùn)算符C語(yǔ)言用于描述對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的特殊符號(hào)2運(yùn)算符分類算術(shù)(自增/自減)運(yùn)算符:(+,—,*,/,%、++、--)關(guān)系運(yùn)算符:(>,<,>=,<=,!=,==)邏輯運(yùn)算符:(!,&&,||)位運(yùn)算符:(<<、>>、~、|、^、&)賦值運(yùn)算符:(=)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*,&)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(type)分量運(yùn)算符:(.和)下標(biāo)運(yùn)算符:([])函數(shù)調(diào)用運(yùn)算符:(())3運(yùn)算符分類3運(yùn)算符對(duì)運(yùn)算符的掌握應(yīng)從三個(gè)方面著手和操作符相關(guān)的數(shù)據(jù)類型(包括操作數(shù)和操作結(jié)果的數(shù)據(jù)類型)運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的結(jié)合次序4運(yùn)算符對(duì)運(yùn)算符的掌握應(yīng)從三個(gè)方面著手4表達(dá)式用運(yùn)算符將運(yùn)算對(duì)象連接而成的符合C語(yǔ)言規(guī)則的算式特別地:一個(gè)常量、一個(gè)變量、一個(gè)函數(shù)都可以看成是一個(gè)表達(dá)式表達(dá)式的分類按照運(yùn)算符與運(yùn)算對(duì)象的關(guān)系單目表達(dá)式雙目表達(dá)式三目表達(dá)式5表達(dá)式用運(yùn)算符將運(yùn)算對(duì)象連接而成的符合C語(yǔ)言規(guī)則的算式5表達(dá)式表達(dá)式的分類按照運(yùn)算符在表達(dá)式中的作用算術(shù)表達(dá)式,例:3+4*5賦值表達(dá)式,例:a=3關(guān)系表達(dá)式,例:5<6,a>b邏輯表達(dá)式,例:3>5&&a>=b條件表達(dá)式,例:a>b?a:b逗號(hào)表達(dá)式,例:a=3,b=4,c=5指針表達(dá)式,例:p-2,&a6表達(dá)式表達(dá)式的分類6表達(dá)式的求值過(guò)程C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)指同一個(gè)表達(dá)式中不同運(yùn)算符進(jìn)行計(jì)算時(shí)的先后次序結(jié)合性結(jié)合性是指同一個(gè)表達(dá)式中相同優(yōu)先級(jí)的多個(gè)運(yùn)算應(yīng)遵循的運(yùn)算順序C語(yǔ)言規(guī)定:?jiǎn)文窟\(yùn)算符是自右向左結(jié)合,雙目運(yùn)算符是自左向右結(jié)合7表達(dá)式的求值過(guò)程C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性7表達(dá)式的求值過(guò)程表達(dá)式的求值過(guò)程按C規(guī)定的原則求值表達(dá)式代表了一個(gè)具體的值實(shí)際上是一個(gè)數(shù)據(jù)加工的過(guò)程在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)級(jí)別的高低次序執(zhí)行如果運(yùn)算符兩側(cè)的優(yōu)先級(jí)級(jí)別相同,則按規(guī)定的“結(jié)合方向”處理提示運(yùn)算符的優(yōu)先級(jí)制約著表達(dá)式的計(jì)算次序可以通過(guò)括號(hào)()來(lái)改變表達(dá)式求值的順序表達(dá)式求值過(guò)程中存在某種類型數(shù)據(jù)的類型轉(zhuǎn)換8表達(dá)式的求值過(guò)程表達(dá)式的求值過(guò)程按C規(guī)定的原則求值8算術(shù)表達(dá)式由算術(shù)運(yùn)算符連接數(shù)值型運(yùn)算對(duì)象構(gòu)成其結(jié)果可以是整數(shù)、單精度實(shí)數(shù)和雙精度實(shí)數(shù)例:inta=2;floatb=4.5;表達(dá)式2*a+b的結(jié)果為8.5優(yōu)先給與結(jié)合性提示兩個(gè)整數(shù)相除其結(jié)果仍為整數(shù)(即舍去小數(shù)部分)例如:13/10的結(jié)果為1“%”為求余運(yùn)算符,參與運(yùn)算的兩個(gè)數(shù)均為整數(shù)例如:10%3=1-10%3=-1除以0在計(jì)算機(jī)系統(tǒng)中是沒(méi)有意義的用括號(hào)可以改變表達(dá)式的運(yùn)算順序9算術(shù)表達(dá)式由算術(shù)運(yùn)算符連接數(shù)值型運(yùn)算對(duì)象構(gòu)成9算術(shù)表達(dá)式算術(shù)表達(dá)式例1:設(shè)intb=7;floata=2.5,c=4.7;表達(dá)式a+(int)(b/3*(int)(a+c)/2)%4的值?例2:10算術(shù)表達(dá)式算術(shù)表達(dá)式10自增/自減“++”與“--”的作用是使變量的值增1或減1C語(yǔ)言提供兩種形式的++/--運(yùn)算符++a,--a(前綴運(yùn)算:先進(jìn)行增量運(yùn)算后使用)a++,a--(后綴運(yùn)算:先使用后進(jìn)行增量運(yùn)算)提示:增和自減只能作用于變量,不允許對(duì)常量、表達(dá)式或其它進(jìn)行操作當(dāng)自增/自減變量值本身就單獨(dú)構(gòu)成一條語(yǔ)句時(shí),前綴和后綴的效果是一樣的對(duì)于“++”和“--”的使用要避免二義性11自增/自減“++”與“--”的作用是使變量的值增1或減111自增/自減計(jì)算過(guò)程例1:設(shè)x=5y=++x;/*先計(jì)算x=x+1,再執(zhí)行y=x,結(jié)果x=5,y=6*/y=x++;/*先執(zhí)行y=x,再計(jì)算x=x+1,結(jié)果y=5,x=6*/問(wèn)題:如何理解A+++B?C規(guī)定:自左向右取盡可能多的符號(hào)組成運(yùn)算符12自增/自減計(jì)算過(guò)程12自增/自減例2:設(shè)x=5y=x++*x++;/*先取x的值進(jìn)行“*”運(yùn)算,再進(jìn)行兩次x++。y=25,x=7*/y=++x*++x;/*先進(jìn)行兩次x自增1,使x的值為7,再進(jìn)行相乘運(yùn)算。y=49,x=7*/13自增/自減例2:設(shè)x=513賦值表達(dá)式由賦值運(yùn)算符“=”連接表達(dá)式(右側(cè))和變量(左側(cè))形式:變量名=表達(dá)式賦值運(yùn)算符完成兩類操作計(jì)算賦值例inta=2,floatb=5.2,c;c=a*b;賦值運(yùn)算符具有右結(jié)合性例如:a=b=3*5;/*先計(jì)算3*5,后將15賦給b,再將b的值15賦給a*/14賦值表達(dá)式由賦值運(yùn)算符“=”連接表達(dá)式(右側(cè))和變量(左側(cè))賦值表達(dá)式組合賦值表達(dá)式組合賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為組合賦值表達(dá)式形式:變量名<組合賦值運(yùn)算符>表達(dá)式例:x%=y/3;/*x=x%(y/3)*/

a*=b+c/*a=a*(b+c)*/注意:“a*=b+c”與“a=a*b+c”是不等價(jià)的提示“=”不是數(shù)學(xué)中的“等號(hào)”,它表示一個(gè)動(dòng)作,右側(cè)的值送與左側(cè)的變量中(左側(cè)只允許是變量,不能是表達(dá)式或其他)賦值運(yùn)算符兩側(cè)的類型要求一致,否則要進(jìn)行類型轉(zhuǎn)換賦值運(yùn)算符‘=’,相等運(yùn)算符‘==’,和一般習(xí)慣有所不同15賦值表達(dá)式組合賦值表達(dá)式15關(guān)系表達(dá)式關(guān)系運(yùn)算符中的“關(guān)系”二字的含義是指一個(gè)值與另一個(gè)值之間的關(guān)系關(guān)系由關(guān)系運(yùn)算符(>,<,>=,<=,!=,==)連接表達(dá)式構(gòu)成形式:<表達(dá)式>OP<表達(dá)式>表達(dá)式可以是常量、變量和表達(dá)式結(jié)果為整型值0:邏輯假1:邏輯真優(yōu)先級(jí):(>,<,>=,<=)高于(!=,==)結(jié)合方向:自左向右16關(guān)系表達(dá)式關(guān)系運(yùn)算符中的“關(guān)系”二字的含義是指一個(gè)值與另一個(gè)關(guān)系表達(dá)式例:inta=2;floatb=3.4;a>b、a+b>b,a>b>b的結(jié)果分別是多少?(0、1、0)提示進(jìn)行關(guān)系運(yùn)算時(shí),先計(jì)算表達(dá)式的值,然后再進(jìn)行關(guān)系比較運(yùn)算例如:inta=1,b=2,c=3;(1)a+b>3*c的結(jié)果為0/*3>9關(guān)系不成立*(2)(a+=b)<(b*=11%c)結(jié)果值為1/*3<4關(guān)系成立*/17關(guān)系表達(dá)式例:inta=2;floatb=3.4;關(guān)系表達(dá)式在表達(dá)式中連續(xù)使用關(guān)系運(yùn)算符時(shí),要注意正確表達(dá)含義例如:設(shè)x的取值范圍為“-10≤x≤10”時(shí),不能寫(xiě)成“-10<=x<=10”,應(yīng)寫(xiě)成“-10<=x&&x<=10"——為什么?18關(guān)系表達(dá)式在表達(dá)式中連續(xù)使用關(guān)系運(yùn)算符時(shí),要注意正確表達(dá)含義邏輯表達(dá)式“邏輯”是指連接關(guān)系的方式由邏輯運(yùn)算符(&&、||、!)連接的表達(dá)式構(gòu)成形式:<表達(dá)式>OP<表達(dá)式>表達(dá)式可以是常量、變量、或其他表達(dá)式其結(jié)果為整數(shù)值0(邏輯假)或1(邏輯真)優(yōu)先級(jí)“!”最高,“&&”次之,“||”最低邏輯運(yùn)算優(yōu)先級(jí)低于所有關(guān)系運(yùn)算“!”優(yōu)先級(jí)高于所有算術(shù)運(yùn)算(單目運(yùn)算)結(jié)合性&&、||自左向右例如:a<b&&b<d!自右向左(例如:!a)19邏輯表達(dá)式“邏輯”是指連接關(guān)系的方式19邏輯表達(dá)式邏輯運(yùn)算規(guī)則

提示設(shè)計(jì)邏輯“與”運(yùn)算,將最可能為“假”的表達(dá)式放在最左側(cè)設(shè)計(jì)邏輯“或”運(yùn)算,將最可能為“真”的表達(dá)式放在最左側(cè)ab!aa&&ba||b001000非0101非00001非0非001120邏輯表達(dá)式邏輯運(yùn)算規(guī)則ab邏輯表達(dá)式例題:設(shè)inta=3,b=1,x=2,y=0;則(y||b)&&(y||a)的運(yùn)算結(jié)果為1。問(wèn)題:(1)y||b&&y||a的運(yùn)算結(jié)果是多少?(2)兩個(gè)表達(dá)式在運(yùn)算次序是否一致?21邏輯表達(dá)式例題:設(shè)inta=3,b=1,x=2,y=0條件表達(dá)式由條件運(yùn)算符連接它的三個(gè)運(yùn)算對(duì)象構(gòu)成的表達(dá)式稱之為條件表達(dá)式形式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>條件運(yùn)算符的“?”個(gè)“:”總是成對(duì)出現(xiàn)表達(dá)式可以是任何類型,結(jié)果也可以是任何類型運(yùn)算過(guò)程計(jì)算表達(dá)式1的值為真,計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的結(jié)果,不再計(jì)算表達(dá)式3的值為假,計(jì)算表達(dá)式3的值,并將表達(dá)式3的值作為整個(gè)條件表達(dá)式的結(jié)果,不計(jì)算表達(dá)式2的值22條件表達(dá)式由條件運(yùn)算符連接它的三個(gè)運(yùn)算對(duì)象構(gòu)成的表達(dá)式稱之為條件表達(dá)式優(yōu)先級(jí)高于賦值運(yùn)算,但低于所有關(guān)系運(yùn)算、邏輯運(yùn)算和算術(shù)運(yùn)算結(jié)合性自右向左結(jié)合提示當(dāng)多個(gè)條件表達(dá)式嵌套使用時(shí),每個(gè)后續(xù)的“:”總與前面最近的、沒(méi)有配對(duì)的“?”相聯(lián)系例如:x>y?x:z>w?z:w等同于x>y?x:(z>w?z:w)

三個(gè)運(yùn)算對(duì)象的類型可以不相同例如:x?’a’:0.523條件表達(dá)式優(yōu)先級(jí)23條件表達(dá)式例題:設(shè)intx=10,y=9;inta,b,c;a=(--x==y++)?x:--y;b=x++;c=y;執(zhí)行上述程序段后a,b,c的結(jié)果是?分別為8,8,1024條件表達(dá)式例題:設(shè)intx=10,y=9;分別為8,逗號(hào)表達(dá)式由逗號(hào)連接符(,)與表達(dá)式構(gòu)成形式:<表達(dá)式1>,<表達(dá)式2>,····<表達(dá)式n><表達(dá)式1>,<表達(dá)式2>,····<表達(dá)式n>可以是任何類型逗號(hào)表達(dá)式的結(jié)果為最后一個(gè)表達(dá)式的結(jié)果值執(zhí)行過(guò)程先求解表達(dá)式1的值,再求解表達(dá)式2的值,…最后求解表達(dá)式n的值,并將表達(dá)式n的值作為整個(gè)表達(dá)式的結(jié)果值25逗號(hào)表達(dá)式由逗號(hào)連接符(,)與表達(dá)式構(gòu)成25逗號(hào)表達(dá)式優(yōu)先級(jí)級(jí)別最低(最后進(jìn)行逗號(hào)運(yùn)算)結(jié)合方向自左向右例題設(shè)intx,a;表達(dá)式x=(a=4,6*2)的x值?表達(dá)式x=a=4,6*2的x值?x為12x為426逗號(hào)表達(dá)式優(yōu)先級(jí)x為12x為426運(yùn)算符與表達(dá)式混合運(yùn)算指在一個(gè)表達(dá)式中參與運(yùn)算的對(duì)象不是相同的數(shù)據(jù)類型例如:設(shè):inta=3;floatb=3.0;charc=‘3’;則表達(dá)式(a*c+b)/4+(int)b%2的結(jié)果?進(jìn)行混合運(yùn)算的首要的問(wèn)題是對(duì)參與運(yùn)算的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換類型轉(zhuǎn)換由一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換被稱為類型轉(zhuǎn)換27運(yùn)算符與表達(dá)式混合運(yùn)算27“隱式的”自動(dòng)類型轉(zhuǎn)換如果同一個(gè)表達(dá)式中含有不同類型的常量和變量,C語(yǔ)言則在計(jì)算該表達(dá)式時(shí)會(huì)自動(dòng)轉(zhuǎn)換為同一種數(shù)據(jù)類型以便進(jìn)行運(yùn)算轉(zhuǎn)換原則運(yùn)算中將所有char型數(shù)據(jù)轉(zhuǎn)換成int型,float型轉(zhuǎn)換成double型“類型提升”:低類型向高類型轉(zhuǎn)換例如:1.5+2*‘a(chǎn)’-1.2345678/*運(yùn)算次序?yàn)椋?*‘a(chǎn)’:先將‘a(chǎn)’轉(zhuǎn)換成整型數(shù)97,得乘積1941.5+194:1.5和194都轉(zhuǎn)換成double型,和為95.5195.5-1.2345678:1.2345678本身應(yīng)是double型的,所以最后結(jié)果也為double型*/28“隱式的”自動(dòng)類型轉(zhuǎn)換如果同一個(gè)表達(dá)式中含有不同類型的常量和intchar,shortunsignedlongdoublefloat低高“類型提升”示意圖“隱式的”自動(dòng)類型轉(zhuǎn)換29intchar,shortunsignedlongdoubl“隱式的”自動(dòng)類型轉(zhuǎn)換在數(shù)據(jù)輸出時(shí)發(fā)生的類型轉(zhuǎn)換同樣要遵守“類型提升”的原則賦值運(yùn)算中最終結(jié)果的類型,以賦值運(yùn)算符左邊變量的類型為準(zhǔn)要將賦值符號(hào)右邊表達(dá)式的值按左邊變量的數(shù)據(jù)類型轉(zhuǎn)換之后再賦值當(dāng)左邊變量的類型長(zhǎng)度較右邊值的長(zhǎng)度短時(shí),就可能產(chǎn)生誤差,甚至完全錯(cuò)誤提示由C語(yǔ)言的編譯系統(tǒng)自動(dòng)完成不會(huì)體現(xiàn)在C語(yǔ)言源程序中程序設(shè)計(jì)人員必須了解這種自動(dòng)轉(zhuǎn)換的規(guī)則及其結(jié)果30“隱式的”自動(dòng)類型轉(zhuǎn)換在數(shù)據(jù)輸出時(shí)發(fā)生的類型轉(zhuǎn)換30“顯式的”類型轉(zhuǎn)換“顯式的”類型轉(zhuǎn)換通過(guò)用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(type)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換其含義是將右邊表達(dá)式的值轉(zhuǎn)換成括號(hào)中指定的數(shù)據(jù)類型轉(zhuǎn)換形式如下:(type)表達(dá)式type表示一個(gè)強(qiáng)制數(shù)據(jù)類型名表達(dá)式是任何一種類型的表達(dá)式例(int)(x+y)/*注意與(int)x+y不同*/31“顯式的”類型轉(zhuǎn)換“顯式的”類型轉(zhuǎn)換31簡(jiǎn)單表達(dá)式的運(yùn)算【例1】執(zhí)行下面程序段后,inta=1,b=1,c=1;a=a+++b+++c++;printf(“%d,%d,%d”,a,++b,c++);輸出結(jié)果為:A.4,3,2;B.3,3,2;C.3,3,3;D.3,2,2;【例2】若定義x,y為double型,則表達(dá)式x=1,y=x+3/2的值是?2.0【例3】若變量已經(jīng)定義并賦值,下面符合C語(yǔ)言語(yǔ)法的表達(dá)式是:A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b【例4】若a為int類型,且值為3,則執(zhí)行完表達(dá)式a+=a-=a*a后,a的值是多少?A)-3B)9C)-12D)632簡(jiǎn)單表達(dá)式的運(yùn)算【例1】執(zhí)行下面程序段后,【例2】若定義x【例5】分析下列運(yùn)算的結(jié)果。

#defineprintt(x,y,z)printf("x=%d,y=%d,z=%d\n",x,y,z)main()

{intx,y,z;

x=y=z=2;

++x||++y&&++z;printt(x,y,z);

x=y=z=2;

++x&&++y||++z;printt(x,y,z);x=y=z=2;

++x&&++y&&++z;printt(x,y,z);x=y=z=-2;

++x||++y&&++z;

printt(x,y,z);x=y=z=-2;

++x&&++y||++z;

printt(x,y,z);}/*定義宏替換*//*輸出:x=3,y=2,z=2*//*++x&&++y后不為0,不再執(zhí)行||后的++z輸出結(jié)果:x=3,y=3,z=2*/?333?-1-1-2/*輸出:x=-1,y=-2,z=-2*/33【例5】分析下列運(yùn)算的結(jié)果。

#defineprint位運(yùn)算位運(yùn)算二進(jìn)制&(按位與運(yùn)算符)3&5|(按位或運(yùn)算符)3|5^(按位異或運(yùn)算符)3^5~(按位取反運(yùn)算符)~534位運(yùn)算位運(yùn)算34位運(yùn)算位移運(yùn)算左移運(yùn)算右移運(yùn)算位運(yùn)算的作用讀取標(biāo)志加密35位運(yùn)算位移運(yùn)算35其他語(yǔ)言中的表達(dá)式基本與C類似或略少增加了部分支持對(duì)象的新運(yùn)算操作36其他語(yǔ)言中的表達(dá)式基本與C類似或略少36例題和習(xí)題攝氏度與華氏度之間的轉(zhuǎn)換37例題和習(xí)題攝氏度與華氏度之間的轉(zhuǎn)換37此課件下載可自行編輯修改,供參考!感謝您的支持,我們努力做得更好!精選課件ppt此課件下載可自行編輯修改,供參考!精選課件ppt計(jì)算機(jī)及程序設(shè)計(jì)概述運(yùn)算符與表達(dá)式計(jì)算機(jī)及程序設(shè)計(jì)概述運(yùn)算符與表達(dá)式運(yùn)算符C語(yǔ)言用于描述對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的特殊符號(hào)C語(yǔ)言具有豐富而繁多的運(yùn)算符由運(yùn)算符構(gòu)成了各種表達(dá)式分類C語(yǔ)言的運(yùn)算符按其在表達(dá)式中與運(yùn)算對(duì)象的關(guān)系單目運(yùn)算一個(gè)運(yùn)算符連接一個(gè)運(yùn)算對(duì)象雙目運(yùn)算一個(gè)運(yùn)算符連接兩個(gè)運(yùn)算對(duì)象三目運(yùn)算一個(gè)運(yùn)算符連接三個(gè)運(yùn)算對(duì)象

40運(yùn)算符C語(yǔ)言用于描述對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的特殊符號(hào)2運(yùn)算符分類算術(shù)(自增/自減)運(yùn)算符:(+,—,*,/,%、++、--)關(guān)系運(yùn)算符:(>,<,>=,<=,!=,==)邏輯運(yùn)算符:(!,&&,||)位運(yùn)算符:(<<、>>、~、|、^、&)賦值運(yùn)算符:(=)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*,&)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(type)分量運(yùn)算符:(.和)下標(biāo)運(yùn)算符:([])函數(shù)調(diào)用運(yùn)算符:(())41運(yùn)算符分類3運(yùn)算符對(duì)運(yùn)算符的掌握應(yīng)從三個(gè)方面著手和操作符相關(guān)的數(shù)據(jù)類型(包括操作數(shù)和操作結(jié)果的數(shù)據(jù)類型)運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的結(jié)合次序42運(yùn)算符對(duì)運(yùn)算符的掌握應(yīng)從三個(gè)方面著手4表達(dá)式用運(yùn)算符將運(yùn)算對(duì)象連接而成的符合C語(yǔ)言規(guī)則的算式特別地:一個(gè)常量、一個(gè)變量、一個(gè)函數(shù)都可以看成是一個(gè)表達(dá)式表達(dá)式的分類按照運(yùn)算符與運(yùn)算對(duì)象的關(guān)系單目表達(dá)式雙目表達(dá)式三目表達(dá)式43表達(dá)式用運(yùn)算符將運(yùn)算對(duì)象連接而成的符合C語(yǔ)言規(guī)則的算式5表達(dá)式表達(dá)式的分類按照運(yùn)算符在表達(dá)式中的作用算術(shù)表達(dá)式,例:3+4*5賦值表達(dá)式,例:a=3關(guān)系表達(dá)式,例:5<6,a>b邏輯表達(dá)式,例:3>5&&a>=b條件表達(dá)式,例:a>b?a:b逗號(hào)表達(dá)式,例:a=3,b=4,c=5指針表達(dá)式,例:p-2,&a44表達(dá)式表達(dá)式的分類6表達(dá)式的求值過(guò)程C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)指同一個(gè)表達(dá)式中不同運(yùn)算符進(jìn)行計(jì)算時(shí)的先后次序結(jié)合性結(jié)合性是指同一個(gè)表達(dá)式中相同優(yōu)先級(jí)的多個(gè)運(yùn)算應(yīng)遵循的運(yùn)算順序C語(yǔ)言規(guī)定:?jiǎn)文窟\(yùn)算符是自右向左結(jié)合,雙目運(yùn)算符是自左向右結(jié)合45表達(dá)式的求值過(guò)程C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性7表達(dá)式的求值過(guò)程表達(dá)式的求值過(guò)程按C規(guī)定的原則求值表達(dá)式代表了一個(gè)具體的值實(shí)際上是一個(gè)數(shù)據(jù)加工的過(guò)程在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)級(jí)別的高低次序執(zhí)行如果運(yùn)算符兩側(cè)的優(yōu)先級(jí)級(jí)別相同,則按規(guī)定的“結(jié)合方向”處理提示運(yùn)算符的優(yōu)先級(jí)制約著表達(dá)式的計(jì)算次序可以通過(guò)括號(hào)()來(lái)改變表達(dá)式求值的順序表達(dá)式求值過(guò)程中存在某種類型數(shù)據(jù)的類型轉(zhuǎn)換46表達(dá)式的求值過(guò)程表達(dá)式的求值過(guò)程按C規(guī)定的原則求值8算術(shù)表達(dá)式由算術(shù)運(yùn)算符連接數(shù)值型運(yùn)算對(duì)象構(gòu)成其結(jié)果可以是整數(shù)、單精度實(shí)數(shù)和雙精度實(shí)數(shù)例:inta=2;floatb=4.5;表達(dá)式2*a+b的結(jié)果為8.5優(yōu)先給與結(jié)合性提示兩個(gè)整數(shù)相除其結(jié)果仍為整數(shù)(即舍去小數(shù)部分)例如:13/10的結(jié)果為1“%”為求余運(yùn)算符,參與運(yùn)算的兩個(gè)數(shù)均為整數(shù)例如:10%3=1-10%3=-1除以0在計(jì)算機(jī)系統(tǒng)中是沒(méi)有意義的用括號(hào)可以改變表達(dá)式的運(yùn)算順序47算術(shù)表達(dá)式由算術(shù)運(yùn)算符連接數(shù)值型運(yùn)算對(duì)象構(gòu)成9算術(shù)表達(dá)式算術(shù)表達(dá)式例1:設(shè)intb=7;floata=2.5,c=4.7;表達(dá)式a+(int)(b/3*(int)(a+c)/2)%4的值?例2:48算術(shù)表達(dá)式算術(shù)表達(dá)式10自增/自減“++”與“--”的作用是使變量的值增1或減1C語(yǔ)言提供兩種形式的++/--運(yùn)算符++a,--a(前綴運(yùn)算:先進(jìn)行增量運(yùn)算后使用)a++,a--(后綴運(yùn)算:先使用后進(jìn)行增量運(yùn)算)提示:增和自減只能作用于變量,不允許對(duì)常量、表達(dá)式或其它進(jìn)行操作當(dāng)自增/自減變量值本身就單獨(dú)構(gòu)成一條語(yǔ)句時(shí),前綴和后綴的效果是一樣的對(duì)于“++”和“--”的使用要避免二義性49自增/自減“++”與“--”的作用是使變量的值增1或減111自增/自減計(jì)算過(guò)程例1:設(shè)x=5y=++x;/*先計(jì)算x=x+1,再執(zhí)行y=x,結(jié)果x=5,y=6*/y=x++;/*先執(zhí)行y=x,再計(jì)算x=x+1,結(jié)果y=5,x=6*/問(wèn)題:如何理解A+++B?C規(guī)定:自左向右取盡可能多的符號(hào)組成運(yùn)算符50自增/自減計(jì)算過(guò)程12自增/自減例2:設(shè)x=5y=x++*x++;/*先取x的值進(jìn)行“*”運(yùn)算,再進(jìn)行兩次x++。y=25,x=7*/y=++x*++x;/*先進(jìn)行兩次x自增1,使x的值為7,再進(jìn)行相乘運(yùn)算。y=49,x=7*/51自增/自減例2:設(shè)x=513賦值表達(dá)式由賦值運(yùn)算符“=”連接表達(dá)式(右側(cè))和變量(左側(cè))形式:變量名=表達(dá)式賦值運(yùn)算符完成兩類操作計(jì)算賦值例inta=2,floatb=5.2,c;c=a*b;賦值運(yùn)算符具有右結(jié)合性例如:a=b=3*5;/*先計(jì)算3*5,后將15賦給b,再將b的值15賦給a*/52賦值表達(dá)式由賦值運(yùn)算符“=”連接表達(dá)式(右側(cè))和變量(左側(cè))賦值表達(dá)式組合賦值表達(dá)式組合賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為組合賦值表達(dá)式形式:變量名<組合賦值運(yùn)算符>表達(dá)式例:x%=y/3;/*x=x%(y/3)*/

a*=b+c/*a=a*(b+c)*/注意:“a*=b+c”與“a=a*b+c”是不等價(jià)的提示“=”不是數(shù)學(xué)中的“等號(hào)”,它表示一個(gè)動(dòng)作,右側(cè)的值送與左側(cè)的變量中(左側(cè)只允許是變量,不能是表達(dá)式或其他)賦值運(yùn)算符兩側(cè)的類型要求一致,否則要進(jìn)行類型轉(zhuǎn)換賦值運(yùn)算符‘=’,相等運(yùn)算符‘==’,和一般習(xí)慣有所不同53賦值表達(dá)式組合賦值表達(dá)式15關(guān)系表達(dá)式關(guān)系運(yùn)算符中的“關(guān)系”二字的含義是指一個(gè)值與另一個(gè)值之間的關(guān)系關(guān)系由關(guān)系運(yùn)算符(>,<,>=,<=,!=,==)連接表達(dá)式構(gòu)成形式:<表達(dá)式>OP<表達(dá)式>表達(dá)式可以是常量、變量和表達(dá)式結(jié)果為整型值0:邏輯假1:邏輯真優(yōu)先級(jí):(>,<,>=,<=)高于(!=,==)結(jié)合方向:自左向右54關(guān)系表達(dá)式關(guān)系運(yùn)算符中的“關(guān)系”二字的含義是指一個(gè)值與另一個(gè)關(guān)系表達(dá)式例:inta=2;floatb=3.4;a>b、a+b>b,a>b>b的結(jié)果分別是多少?(0、1、0)提示進(jìn)行關(guān)系運(yùn)算時(shí),先計(jì)算表達(dá)式的值,然后再進(jìn)行關(guān)系比較運(yùn)算例如:inta=1,b=2,c=3;(1)a+b>3*c的結(jié)果為0/*3>9關(guān)系不成立*(2)(a+=b)<(b*=11%c)結(jié)果值為1/*3<4關(guān)系成立*/55關(guān)系表達(dá)式例:inta=2;floatb=3.4;關(guān)系表達(dá)式在表達(dá)式中連續(xù)使用關(guān)系運(yùn)算符時(shí),要注意正確表達(dá)含義例如:設(shè)x的取值范圍為“-10≤x≤10”時(shí),不能寫(xiě)成“-10<=x<=10”,應(yīng)寫(xiě)成“-10<=x&&x<=10"——為什么?56關(guān)系表達(dá)式在表達(dá)式中連續(xù)使用關(guān)系運(yùn)算符時(shí),要注意正確表達(dá)含義邏輯表達(dá)式“邏輯”是指連接關(guān)系的方式由邏輯運(yùn)算符(&&、||、!)連接的表達(dá)式構(gòu)成形式:<表達(dá)式>OP<表達(dá)式>表達(dá)式可以是常量、變量、或其他表達(dá)式其結(jié)果為整數(shù)值0(邏輯假)或1(邏輯真)優(yōu)先級(jí)“!”最高,“&&”次之,“||”最低邏輯運(yùn)算優(yōu)先級(jí)低于所有關(guān)系運(yùn)算“!”優(yōu)先級(jí)高于所有算術(shù)運(yùn)算(單目運(yùn)算)結(jié)合性&&、||自左向右例如:a<b&&b<d!自右向左(例如:!a)57邏輯表達(dá)式“邏輯”是指連接關(guān)系的方式19邏輯表達(dá)式邏輯運(yùn)算規(guī)則

提示設(shè)計(jì)邏輯“與”運(yùn)算,將最可能為“假”的表達(dá)式放在最左側(cè)設(shè)計(jì)邏輯“或”運(yùn)算,將最可能為“真”的表達(dá)式放在最左側(cè)ab!aa&&ba||b001000非0101非00001非0非001158邏輯表達(dá)式邏輯運(yùn)算規(guī)則ab邏輯表達(dá)式例題:設(shè)inta=3,b=1,x=2,y=0;則(y||b)&&(y||a)的運(yùn)算結(jié)果為1。問(wèn)題:(1)y||b&&y||a的運(yùn)算結(jié)果是多少?(2)兩個(gè)表達(dá)式在運(yùn)算次序是否一致?59邏輯表達(dá)式例題:設(shè)inta=3,b=1,x=2,y=0條件表達(dá)式由條件運(yùn)算符連接它的三個(gè)運(yùn)算對(duì)象構(gòu)成的表達(dá)式稱之為條件表達(dá)式形式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>條件運(yùn)算符的“?”個(gè)“:”總是成對(duì)出現(xiàn)表達(dá)式可以是任何類型,結(jié)果也可以是任何類型運(yùn)算過(guò)程計(jì)算表達(dá)式1的值為真,計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的結(jié)果,不再計(jì)算表達(dá)式3的值為假,計(jì)算表達(dá)式3的值,并將表達(dá)式3的值作為整個(gè)條件表達(dá)式的結(jié)果,不計(jì)算表達(dá)式2的值60條件表達(dá)式由條件運(yùn)算符連接它的三個(gè)運(yùn)算對(duì)象構(gòu)成的表達(dá)式稱之為條件表達(dá)式優(yōu)先級(jí)高于賦值運(yùn)算,但低于所有關(guān)系運(yùn)算、邏輯運(yùn)算和算術(shù)運(yùn)算結(jié)合性自右向左結(jié)合提示當(dāng)多個(gè)條件表達(dá)式嵌套使用時(shí),每個(gè)后續(xù)的“:”總與前面最近的、沒(méi)有配對(duì)的“?”相聯(lián)系例如:x>y?x:z>w?z:w等同于x>y?x:(z>w?z:w)

三個(gè)運(yùn)算對(duì)象的類型可以不相同例如:x?’a’:0.561條件表達(dá)式優(yōu)先級(jí)23條件表達(dá)式例題:設(shè)intx=10,y=9;inta,b,c;a=(--x==y++)?x:--y;b=x++;c=y;執(zhí)行上述程序段后a,b,c的結(jié)果是?分別為8,8,1062條件表達(dá)式例題:設(shè)intx=10,y=9;分別為8,逗號(hào)表達(dá)式由逗號(hào)連接符(,)與表達(dá)式構(gòu)成形式:<表達(dá)式1>,<表達(dá)式2>,····<表達(dá)式n><表達(dá)式1>,<表達(dá)式2>,····<表達(dá)式n>可以是任何類型逗號(hào)表達(dá)式的結(jié)果為最后一個(gè)表達(dá)式的結(jié)果值執(zhí)行過(guò)程先求解表達(dá)式1的值,再求解表達(dá)式2的值,…最后求解表達(dá)式n的值,并將表達(dá)式n的值作為整個(gè)表達(dá)式的結(jié)果值63逗號(hào)表達(dá)式由逗號(hào)連接符(,)與表達(dá)式構(gòu)成25逗號(hào)表達(dá)式優(yōu)先級(jí)級(jí)別最低(最后進(jìn)行逗號(hào)運(yùn)算)結(jié)合方向自左向右例題設(shè)intx,a;表達(dá)式x=(a=4,6*2)的x值?表達(dá)式x=a=4,6*2的x值?x為12x為464逗號(hào)表達(dá)式優(yōu)先級(jí)x為12x為426運(yùn)算符與表達(dá)式混合運(yùn)算指在一個(gè)表達(dá)式中參與運(yùn)算的對(duì)象不是相同的數(shù)據(jù)類型例如:設(shè):inta=3;floatb=3.0;charc=‘3’;則表達(dá)式(a*c+b)/4+(int)b%2的結(jié)果?進(jìn)行混合運(yùn)算的首要的問(wèn)題是對(duì)參與運(yùn)算的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換類型轉(zhuǎn)換由一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換被稱為類型轉(zhuǎn)換65運(yùn)算符與表達(dá)式混合運(yùn)算27“隱式的”自動(dòng)類型轉(zhuǎn)換如果同一個(gè)表達(dá)式中含有不同類型的常量和變量,C語(yǔ)言則在計(jì)算該表達(dá)式時(shí)會(huì)自動(dòng)轉(zhuǎn)換為同一種數(shù)據(jù)類型以便進(jìn)行運(yùn)算轉(zhuǎn)換原則運(yùn)算中將所有char型數(shù)據(jù)轉(zhuǎn)換成int型,float型轉(zhuǎn)換成double型“類型提升”:低類型向高類型轉(zhuǎn)換例如:1.5+2*‘a(chǎn)’-1.2345678/*運(yùn)算次序?yàn)椋?*‘a(chǎn)’:先將‘a(chǎn)’轉(zhuǎn)換成整型數(shù)97,得乘積1941.5+194:1.5和194都轉(zhuǎn)換成double型,和為95.5195.5-1.2345678:1.2345678本身應(yīng)是double型的,所以最后結(jié)果也為double型*/66“隱式的”自動(dòng)類型轉(zhuǎn)換如果同一個(gè)表達(dá)式中含有不同類型的常量和intchar,shortunsignedlongdoublefloat低高“類型提升”示意圖“隱式的”自動(dòng)類型轉(zhuǎn)換67intchar,shortunsignedlongdoubl“隱式的”自動(dòng)類型轉(zhuǎn)換在數(shù)據(jù)輸出時(shí)發(fā)生的類型轉(zhuǎn)換同樣要遵守“類型提升”的原則賦值運(yùn)算中最終結(jié)果的類型,以賦值運(yùn)算符左邊變量的類型為準(zhǔn)要將賦值符號(hào)右邊表達(dá)式的值按左邊變量的數(shù)據(jù)類型轉(zhuǎn)換之后再賦值當(dāng)左邊變量的類型長(zhǎng)度較右邊值的長(zhǎng)度短時(shí),就可能產(chǎn)生誤差,甚至完全錯(cuò)誤提示由C語(yǔ)言的編譯系統(tǒng)自動(dòng)完成不會(huì)體現(xiàn)在C語(yǔ)言源程序中程序設(shè)計(jì)人員必須了解這種自動(dòng)轉(zhuǎn)換的規(guī)則及其結(jié)果68“隱式的”自動(dòng)類型轉(zhuǎn)換在數(shù)據(jù)輸出時(shí)發(fā)生的類型轉(zhuǎn)換30“顯式的”類型轉(zhuǎn)換“顯式的”類型轉(zhuǎn)換通過(guò)用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(type)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換其含義是將右邊表達(dá)式的值轉(zhuǎn)換成括號(hào)中指定的數(shù)據(jù)類型轉(zhuǎn)換形式如下:(type)表達(dá)式type表

溫馨提示

  • 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)論