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è),還剩53頁(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)介

C語(yǔ)言程序設(shè)計(jì)大連軟件職業(yè)學(xué)院3.1算術(shù)運(yùn)算單目運(yùn)算符:只作用于一個(gè)運(yùn)算對(duì)象的運(yùn)算符;

雙目運(yùn)算符:作用于兩個(gè)運(yùn)算對(duì)象的運(yùn)算符。

一元運(yùn)算符:++,--,+,-二元運(yùn)算符:+,-,*,/,%(注意對(duì)運(yùn)算對(duì)象的要求)1.求余運(yùn)算A只能用來(lái)求兩個(gè)整數(shù)(int型或char型)的余數(shù);B會(huì)求a%b的值;eg:14%(-6)=?-14%6=?

余數(shù)符號(hào)一除了求余運(yùn)算符外,其余運(yùn)算符均既可整數(shù)運(yùn)算,又可作浮點(diǎn)數(shù)運(yùn)算。求余運(yùn)算符僅可作整數(shù)運(yùn)算。二兩個(gè)整數(shù)相除的運(yùn)算結(jié)果為一個(gè)整數(shù)。eg:13/5三加減運(yùn)算符可以作字符運(yùn)算。eg:’a’+1算術(shù)運(yùn)算符在使用中注意事項(xiàng)優(yōu)先級(jí)和結(jié)合性規(guī)則A不同級(jí)別:在算術(shù)運(yùn)算符中,其優(yōu)先級(jí)別從高到低依次為:()(括號(hào)最優(yōu)先)+,-,++,--(一元運(yùn)算符)*,/,%(二元運(yùn)算符)+,-(二元運(yùn)算符)B同一級(jí)別:按它們的結(jié)合性確定其優(yōu)先次序.返回2.增1和減1運(yùn)算–––也稱自加和自減運(yùn)算;A.用法:++或--可以寫在變量之前稱為前綴,寫在變量之后稱為后綴。eg:++i表示i=i+1--i表示i=i-1i++i--

注意:++或--只能對(duì)變量施加運(yùn)算,不能對(duì)常量或表達(dá)式施加運(yùn)算。Eg:5++或者(a+b)++或者++(a+b)都是錯(cuò)誤的。前綴和后綴的區(qū)別.程序+-.cj=++i;j=i++;※小結(jié):++i先運(yùn)算,后取值;i++先取值,后運(yùn)算。++i,--i在使用i之前,先使i的值加(減)1;i++,i--在使用i之后,使i的值加(減)1;

inti=3,j=3;printf(“%d,%d\n”,++i,j++);運(yùn)行結(jié)果:運(yùn)行后的i,j

4,34,4思考:1)intx=10,y=7;y=++x-y+2;printf(“%d%d\n”,y,x);顯示什么?Ex.c注意一:最長(zhǎng)符號(hào)原則:由于C語(yǔ)言的運(yùn)算符可由多個(gè)符號(hào)組成,如:++,->,&&,||,->*……那么i+++j是(i++)+j還是i+(++j)?

“最長(zhǎng)符號(hào)原則”規(guī)定:從左算起的多個(gè)符號(hào)若符合C語(yǔ)言規(guī)定的法定符號(hào),一律不得拆分。注意:盡量避免這樣有歧義的寫法.注意二:Eg:inti=3;printf(“%d,%d”,i,i++);盡量避免這樣的寫法inti=3,j;j=i++;printf(“%d,%d”,i,j);后置運(yùn)算符到底后到哪?inti=3,j;j=i+++i++;printf(“%d,%d\n”,i,j);

運(yùn)行后i,j的值:5,6因?yàn)閕++要等到加之后做,故j=6,i由3增到5。結(jié)論:后置運(yùn)算要”后”到本語(yǔ)句的其它動(dòng)作之后。表達(dá)式:表達(dá)式是一種使用常量、變量和函數(shù)以及運(yùn)算符組合起來(lái)的有確定值及類型的算式。算術(shù)表達(dá)式inta=1,b=2;a*b+5b/a+a%ba+++b--3.1.3關(guān)系運(yùn)算和邏輯運(yùn)算一.關(guān)系運(yùn)算符1.六種關(guān)系運(yùn)算符><>=<===!=結(jié)合性:都是從左到右同一優(yōu)先級(jí)同一優(yōu)先級(jí)

二.關(guān)系表達(dá)式用六個(gè)關(guān)系運(yùn)算符中的一個(gè)連接兩個(gè)算術(shù)表達(dá)式或賦值表達(dá)式,就構(gòu)成了關(guān)系表達(dá)式.Eg:a+b>=c-dx==y注意和“=”區(qū)分??!score>90等注意:1.C語(yǔ)言不提供邏輯型數(shù)據(jù),而是整數(shù)1表示真,用整數(shù)0表示假。

判斷:eg:0>942!=4242==42100!=50

四.邏輯運(yùn)算符1.邏輯運(yùn)算符的種類:

!邏輯非&&邏輯與‖邏輯或2.邏輯運(yùn)算必須連接邏輯量,運(yùn)算的結(jié)果也是邏輯量,即結(jié)果只能是0或1。C語(yǔ)言中真與假的規(guī)定非0為真,0為假;運(yùn)算結(jié)果為真時(shí)用1表示;運(yùn)算結(jié)果為假時(shí)用0表示。特別注意:所有非“0”整數(shù)都認(rèn)為是邏輯“真”,整數(shù)“0”則認(rèn)為是邏輯“假”。例如25&&-3其值得10||356其值得1!(-23)其值得03.運(yùn)算符的優(yōu)先級(jí)和結(jié)合性!(非)算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和‖賦值運(yùn)算符關(guān)系運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符,因此,x+y>=a+b與(x+y)>=(a+b)等價(jià)低高“短路”現(xiàn)象:1.在計(jì)算形如(表達(dá)式1)&&(表達(dá)式2)&&……的邏輯表達(dá)式時(shí),只要有一個(gè)表達(dá)式的值為假,那么整個(gè)表達(dá)式的值就為假。因此,C語(yǔ)言規(guī)定在計(jì)算過(guò)程中先計(jì)算表達(dá)式1,如果其值是邏輯真或非0,就接著計(jì)算表達(dá)式2,如果第一個(gè)表達(dá)式為邏輯假,則可以判定整個(gè)表達(dá)式的值為邏輯假,其后的表達(dá)式不被計(jì)算。2.在計(jì)算形如(表達(dá)式1)‖(表達(dá)式2)‖……,先計(jì)算表達(dá)式1,如果其值為邏輯“假”或0,就接著計(jì)算表達(dá)式2,如果第一個(gè)為邏輯真的表達(dá)式就可判定整個(gè)表達(dá)式為邏輯真,其后的表達(dá)式將不被計(jì)算。Eg:main(){inta=1,b=2,c=3,d=4,m=2,n=2;(m=a>b)&&(n=c>d);printf(“%d%d\n”,m,n);}思考??

數(shù)值在計(jì)算機(jī)中的表示

1.二進(jìn)制位與字節(jié)

計(jì)算機(jī)系統(tǒng)的內(nèi)存儲(chǔ)器,是由許多稱為字節(jié)的單元組成的,1個(gè)字節(jié)由8個(gè)二進(jìn)制位(bit)構(gòu)成,每位的取值為0/1。最右端的那1位稱為“最低位”,編號(hào)為0;最左端的那1位稱為“最高位”,而且從最低位到最高位順序,依次編號(hào)。下圖是1個(gè)字節(jié)各二進(jìn)制位的編號(hào)。

2.數(shù)值的原碼表示數(shù)值的原碼表示是,將最高位用作符號(hào)位(0表示正數(shù),1表示負(fù)數(shù)),其余各位代表數(shù)值本身的絕對(duì)值(以二進(jìn)制形式表示)的表示形式。為簡(jiǎn)化描述起見,本節(jié)約定用1個(gè)字節(jié)表示1個(gè)整數(shù)。

76543210例如,+9的原碼是00001001└→符號(hào)位上的0表示正數(shù)-9的原碼是10001001。└→符號(hào)位上的1表示負(fù)數(shù)3.數(shù)值的反碼表示數(shù)值的反碼表示分兩種情況:(1)正數(shù)的反碼:與原碼相同。例如,+9的反碼是00001001。(2)負(fù)數(shù)的反碼:符號(hào)位為1,其余各位為該數(shù)絕對(duì)值的原碼按位取反(1變0、0變1)。例如,-9的反碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼0001001按位取反為1110110,所以-9的反碼是11110110。4.數(shù)值的補(bǔ)碼表示數(shù)值的補(bǔ)碼表示也分兩種情況:(1)正數(shù)的補(bǔ)碼:與原碼相同。例如,+9的補(bǔ)碼是00001001。(2)負(fù)數(shù)的補(bǔ)碼:符號(hào)位為1,其余位為該數(shù)絕對(duì)值的原碼按位取反;然后整個(gè)數(shù)加1。例如,-9的補(bǔ)碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼0001001按位取反為1110110;再加1,所以-9的補(bǔ)碼是11110111。5.數(shù)值在計(jì)算機(jī)中的表示──補(bǔ)碼在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼表示(存儲(chǔ)),原因在于:使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理;同時(shí),減法也可按加法來(lái)處理。3.15位操作位操作是對(duì)字節(jié)或字節(jié)內(nèi)部的二進(jìn)制位進(jìn)行測(cè)試、設(shè)置、移位或邏輯運(yùn)算。位操作分為兩類:一類是邏輯位運(yùn)算;另一類是移位運(yùn)算。1邏輯位運(yùn)算1.邏輯位運(yùn)算符邏輯位運(yùn)算用來(lái)對(duì)某一個(gè)或某一對(duì)二進(jìn)制位進(jìn)行操作。其中:~表示按位取反&表示按位與︱表示按位或^表示按位異或pqp&qp^qp|q~p000001010111100110111010按位與按位異或按位或按位取反思考:10&&2=?10&2=?10^2=?2移位運(yùn)算移位運(yùn)算計(jì)算實(shí)現(xiàn)操作數(shù)字中所有的二進(jìn)制位按指定的位數(shù)順序向左或向右移位.移位運(yùn)算包括左移位和右移位。移位運(yùn)算的一般格式為v<<nv>>n其中,v是操作數(shù),可以是變量,也可以是表達(dá)式;n必須是正整數(shù),表示要移動(dòng)的位數(shù)。(1)左移位運(yùn)算假設(shè)有變量a,左移位運(yùn)算a<<n,表示將a的各個(gè)二進(jìn)制位順序左移n位,右端空出的位補(bǔ)0,移出左端之外的位則舍棄。例如,設(shè)a=25,則a<<3為200:

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐a│0│0│0│0│0│0│0│0│0│0│0│1│1│0│0│1│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐a<<3│0│0│0│0│0│0│0│0│1│1│0│0│1│0│0│0│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘左移位相當(dāng)于乘2運(yùn)算左移舍棄,右補(bǔ)空格.(2)右移位運(yùn)算假設(shè)有變量a,右移位運(yùn)算a>>n,表示將a的各個(gè)二進(jìn)制位順序右移n位,移出右端之外的位被舍棄,左端空出的位則補(bǔ)0或補(bǔ)1,這取決于具體的機(jī)器和被移位的數(shù)是有符號(hào)數(shù)還是無(wú)符號(hào)數(shù)。(1)對(duì)無(wú)符號(hào)數(shù)進(jìn)行右移時(shí),左端空出的位一律補(bǔ)0;(2)對(duì)用補(bǔ)碼表示的有符號(hào)數(shù)進(jìn)行右移時(shí),有的機(jī)器采取邏輯右移,有的機(jī)器則采取算術(shù)右移。邏輯右移:不管是正數(shù)還是負(fù)數(shù),左端空位一律補(bǔ)0;算術(shù)右移:正數(shù)右移,左端的空位全部補(bǔ)0;負(fù)數(shù)右移,左端的空位全部補(bǔ)1(即符號(hào)位)。例如,設(shè)a=-32768(補(bǔ)碼表示),則有:┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐a│1│0│0│0│0│0│0│0│0│0│0│0│0│0│0│0│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐a>>2│0│0│1│0│0│0│0│0│0│0│0│0│0│0│0│0│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘邏輯右移2位后,其值為8192。┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐a>>2│1│1│1│0│0│0│0│0│0│0│0│0│0│0│0│0│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘算術(shù)右移2位后,其值為-8192。算術(shù)右移相當(dāng)于除2運(yùn)算。3.1.6賦值運(yùn)算賦值表達(dá)式的形式:v=eEg:a=10其中:“=”稱為賦值符號(hào)或賦值運(yùn)算符號(hào);“=”右邊的e是一個(gè)表達(dá)式或常量;左邊的v是一個(gè)變量或數(shù)組元素.賦值表達(dá)式的功能是計(jì)算e的值并存放在v中.賦值表達(dá)式的末尾加上分號(hào)就是賦值語(yǔ)句.一.賦值運(yùn)算符C語(yǔ)言提供了兩種賦值運(yùn)算符:

簡(jiǎn)單賦值運(yùn)算符;復(fù)合賦值運(yùn)算符.1.簡(jiǎn)單賦值運(yùn)算符即“=”,它必須連接兩個(gè)運(yùn)算量,其左邊只能是變量或數(shù)組元素,右邊可以是任何表達(dá)式.Eg:判斷正誤?x=y(tǒng)+2;x=x+1;y+2=x,5=x;2.復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符有10種,它們由賦值號(hào)“=”和另外一個(gè)二元(雙目)運(yùn)算符組成,具有計(jì)算和賦值雙重功能.復(fù)合賦值運(yùn)算的一般格式為:

變量雙目運(yùn)算符=表達(dá)式└──┬──┘復(fù)合賦值運(yùn)算符它等價(jià)于:變量=變量雙目運(yùn)算符(表達(dá)式)。當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí),表達(dá)式外的一對(duì)圓括號(hào)才可缺省,否則可能出錯(cuò)。例如,x+=3 /*等價(jià)于x=x+3*/y*=x+6 /*等價(jià)于y=y*(x+6),而不是y=y*x+6*/

注意:一.使用復(fù)合賦值運(yùn)算符連接兩個(gè)運(yùn)算量時(shí),要把右邊的運(yùn)算量視為一個(gè)整體。例如x*=y+5表示x=x*(y+5)而不是x=x*y+5。二.優(yōu)先級(jí):所有的賦值運(yùn)算符都處于同一優(yōu)先級(jí),且優(yōu)先級(jí)很低,僅比逗號(hào)運(yùn)算符高而比其他所有的運(yùn)算符都低.

結(jié)合性:從右到左。賦值運(yùn)算要求類型兼容教材3.4節(jié)類型轉(zhuǎn)換問(wèn)題由低到高——自動(dòng)轉(zhuǎn)換由高到低——強(qiáng)制轉(zhuǎn)換(類型說(shuō)明符)〈表達(dá)式〉eg:inta=3;doubleb;b=a;自動(dòng)類型轉(zhuǎn)換低高doublefloatlongunsignedintchar,short低高①橫向箭頭表示必定的轉(zhuǎn)換(兩個(gè)float型的數(shù)據(jù)運(yùn)算,也先都化成double型除非各自后綴f。)②縱向箭頭表示當(dāng)運(yùn)算對(duì)象類型不同時(shí)的轉(zhuǎn)換方向。強(qiáng)制轉(zhuǎn)換舉例#include<stdio.h>voidmain(){ inta=5; floatb=(float)3.9; doubled; d=b; a=(int)b; printf("%d\t%.2lf\n",a,d);}其他運(yùn)算符1三目運(yùn)算符d1?d2:d3例如:分析如下程序結(jié)果inta=3,b=5;a>b?a:b3數(shù)據(jù)長(zhǎng)度運(yùn)算符sizeof((類型說(shuō)明符)/(變量名))Eg:分析以下表達(dá)式值分別為多少?inta,b[20];sizeof(a);sizeof(int);sizeof(b);sizeof(b[1]);4逗號(hào)運(yùn)算符一.逗號(hào)表達(dá)式的形式d1,d2,d3,d41.Eg:3+5,6+83*5,a*4,a+52.表達(dá)式1,

溫馨提示

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