C語(yǔ)言程序設(shè)計(jì) 課件 任務(wù)1.5 運(yùn)算符與表達(dá)式_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 任務(wù)1.5 運(yùn)算符與表達(dá)式_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 任務(wù)1.5 運(yùn)算符與表達(dá)式_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 任務(wù)1.5 運(yùn)算符與表達(dá)式_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 任務(wù)1.5 運(yùn)算符與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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ì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.5運(yùn)算符與表達(dá)式C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.5運(yùn)算符與表達(dá)式01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入

計(jì)算機(jī)處理的基本對(duì)象是數(shù)據(jù)。變量和常量則是程序的最基本的數(shù)據(jù)形式,將它們用操作符(也稱(chēng)為運(yùn)算符)連接起來(lái),便構(gòu)成了表達(dá)式。

在應(yīng)用程序中,經(jīng)常會(huì)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,為此,C語(yǔ)言提供了多種類(lèi)型的運(yùn)算符,即專(zhuān)門(mén)用于告訴程序執(zhí)行特定運(yùn)算或邏輯操作的符號(hào)。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.5運(yùn)算符與表達(dá)式二技能點(diǎn)分析1、了解運(yùn)算符的基本類(lèi)型;2、能夠運(yùn)用運(yùn)算符完成運(yùn)算。學(xué)習(xí)目標(biāo)1.C語(yǔ)言中支持哪些種類(lèi)的運(yùn)算符?2.a(chǎn)++與++a有何區(qū)別?3.當(dāng)由多個(gè)不同運(yùn)算符和運(yùn)算數(shù)組成較為復(fù)雜的表達(dá)式時(shí),其運(yùn)算符計(jì)算順序如何確定?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.5運(yùn)算符與表達(dá)式三技能點(diǎn)詳解——1算術(shù)運(yùn)算符C語(yǔ)言中算術(shù)運(yùn)算符有加“+”、減“

”、乘“*”、除“/”、求余(模)“%”、“++”、“

”7個(gè),其中+、

、*、/、%是二元運(yùn)算符,++、

是一元運(yùn)算符。+、--、*、/都能對(duì)整數(shù)或?qū)崝?shù)進(jìn)行運(yùn)算。在同一級(jí)別運(yùn)算時(shí),按左結(jié)合規(guī)則進(jìn)行。算術(shù)運(yùn)算符的操作功能描述如表1.5.1所示,其中假設(shè)整型變量a的值為2,變量b的值為5。運(yùn)算符描述實(shí)例+把兩個(gè)操作數(shù)相加a+b將得到

7-從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù)a-b將得到

-3*把兩個(gè)操作數(shù)相乘a*b將得到10/分子除以分母b/a將得到

2.5%取模運(yùn)算符,整除后的余數(shù)b%a將得到

1++自增運(yùn)算符,整數(shù)值增加

1a++或++a將得到

3--自減運(yùn)算符,整數(shù)值減少

1a--或--a將得到

11)求余運(yùn)算符%

求余運(yùn)算符%只能對(duì)整型數(shù)據(jù)進(jìn)行,若表1.5.1所示,5%2的值為1。

若在計(jì)算“a%b”時(shí),如果a、b中至少有一個(gè)為負(fù)數(shù),此時(shí)運(yùn)算結(jié)果如何呢?C語(yǔ)言中規(guī)定:余數(shù)與a的符號(hào)相同,而絕對(duì)值不變。因此表達(dá)式5%3、5%-3、-5%3、-5%-3的值分別為2、2、-2、-2。三技能點(diǎn)詳解——1算術(shù)運(yùn)算符三技能點(diǎn)詳解——1算術(shù)運(yùn)算符2)++、--運(yùn)算符++、--只能對(duì)整型變量進(jìn)行運(yùn)算,如表1.5.1所示,a為整型變量。++、--運(yùn)算符可寫(xiě)在變量的前面或變量的后面,寫(xiě)在變量的前面稱(chēng)為前綴(或前置)運(yùn)算符,寫(xiě)在變量的后面稱(chēng)為后綴(或后置)運(yùn)算符,在使用前綴運(yùn)算與后綴運(yùn)算時(shí)要注意如下兩點(diǎn):(1)++a與a++單獨(dú)構(gòu)成表達(dá)式時(shí),兩者使用時(shí)沒(méi)有區(qū)別;(2)++a與a++不是單獨(dú)構(gòu)成表達(dá)式時(shí),前綴運(yùn)算表示先加后用,后綴運(yùn)算表示先用后加。三技能點(diǎn)詳解——2關(guān)系運(yùn)算符關(guān)系運(yùn)算又稱(chēng)為比較大小運(yùn)算,它有6個(gè)運(yùn)算符:>、>=、<、<=、==、!=,它們的結(jié)合規(guī)則都是自左向右的。關(guān)系運(yùn)算的結(jié)果為邏輯真或邏輯假,關(guān)系成立時(shí)為邏輯真(值為1),關(guān)系不成立時(shí)為邏輯假(值為0)。表1.5.2列出了各個(gè)關(guān)系運(yùn)算符的功能描述與實(shí)例,其中假設(shè)a的值為2,b的值為5。運(yùn)算符描述實(shí)例==檢查兩個(gè)操作數(shù)的值是否相等,相等為真,不等為假。(a==b)為假。!=檢查兩個(gè)操作數(shù)的值是否相等,不等為真,相等為假。(a!=b)為真。>

檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真。(a>b)為假。<

檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真。(a<b)為真。>=檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是則條件為真。(a>=b)為假。<=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是則條件為真。(a<=b)為真。三技能點(diǎn)詳解——3邏輯運(yùn)算符C語(yǔ)言中邏輯運(yùn)算符有:邏輯與“&&”、邏輯或“||”、邏輯非“!”。邏輯與表達(dá)式a&&b表示a與b中只要有一個(gè)條件不滿足(值為0),其運(yùn)算結(jié)果為0。邏輯或表達(dá)式a||b表示a與b中只要有一個(gè)條件滿足(值為1),其運(yùn)算結(jié)果為1。邏輯非表達(dá)式!a,當(dāng)a為1時(shí),結(jié)果為0,當(dāng)a為0時(shí),結(jié)果為1。邏輯運(yùn)算真值表如表1.5.3所示。aba&&ba||b!a11110100100101100001表1.5.3邏輯運(yùn)算真值表三技能點(diǎn)詳解——3邏輯運(yùn)算符

在C語(yǔ)言邏輯運(yùn)算中,任何非0值都當(dāng)作邏輯值1處理,因此表達(dá)式0.1||0的結(jié)果值為1。從邏輯與運(yùn)算a&&b的真值表中,我們可以看出,只要a值為0,不管b值如何,其運(yùn)算結(jié)果都為0,因此,在進(jìn)行邏輯與運(yùn)算時(shí),只要計(jì)算a值為0,我們不需計(jì)算b值,這種情況,我們稱(chēng)之為邏輯與優(yōu)化。同樣,對(duì)于邏輯或運(yùn)算a||b,只要a值為1,不需計(jì)算b值,此時(shí)表達(dá)式值恒為1,這種情況稱(chēng)之為邏輯或優(yōu)化。三技能點(diǎn)詳解——4位運(yùn)算符位運(yùn)算符作用于位,并逐位執(zhí)行操作。位運(yùn)算符有&、|、^、~、>>、<<等6個(gè),表1.5.4列出了C語(yǔ)言中所有位運(yùn)算符及其運(yùn)算實(shí)例,其中假設(shè)變量a的值為26,變量b的值為15。三技能點(diǎn)詳解——5賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算的一般形式為:變量=表達(dá)式其功能是將一個(gè)表達(dá)式的值賦給變量。如表達(dá)式:a=b+c該式讀作將表達(dá)式b+c的值賦給a。其本意是改寫(xiě)變量a的值,而不是判斷b+c與a是否相等。這里需要注意的是:C語(yǔ)言中的賦值運(yùn)算符不能誤看作為數(shù)學(xué)上的關(guān)系運(yùn)算符——等于運(yùn)算符。又如數(shù)學(xué)上表達(dá)式:a=a+5,是錯(cuò)誤的表達(dá)式,但在C語(yǔ)言中這是正確的合法表達(dá)式,它是改寫(xiě)存儲(chǔ)單元a中的內(nèi)容,因?yàn)樵贑中,運(yùn)算符“=”不是關(guān)系運(yùn)算符,而是賦值運(yùn)算符。三技能點(diǎn)詳解——5賦值運(yùn)算符運(yùn)算符描

述實(shí)例=簡(jiǎn)單的賦值運(yùn)算符,把右邊操作數(shù)的值賦給左邊操作數(shù)C=A+B將A+B的值賦給C+=加且賦值運(yùn)算符,把右邊操作數(shù)加上左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C+=A相當(dāng)于

C=C+A-=減且賦值運(yùn)算符,把左邊操作數(shù)減去右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C-=A相當(dāng)于

C=C-A*=乘且賦值運(yùn)算符,把右邊操作數(shù)乘以左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C*=A相當(dāng)于

C=C*A/=除且賦值運(yùn)算符,把左邊操作數(shù)除以右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C/=A相當(dāng)于

C=C/A%=求模且賦值運(yùn)算符,求兩個(gè)操作數(shù)的模賦值給左邊操作數(shù)C%=A相當(dāng)于

C=C%A<<=左移且賦值運(yùn)算符C<<=2等同于

C=C<<2>>=右移且賦值運(yùn)算符C>>=2等同于

C=C>>2&=按位與且賦值運(yùn)算符C&=2等同于

C=C&2^=按位異或且賦值運(yùn)算符C^=2等同于

C=C^2|=按位或且賦值運(yùn)算符C|=2等同于

C=C|2三技能點(diǎn)詳解——6雜項(xiàng)運(yùn)算符表1.5.6列出了C語(yǔ)言支持的其他一些重要的運(yùn)算符,包括sizeof和?:。運(yùn)算符描述實(shí)例sizeof()返回變量的大小sizeof(a)將返回

4,其中

a是整數(shù)&返回變量的地址&a;將給出變量的實(shí)際地址*指向一個(gè)變量*a;將指向一個(gè)變量?:條件表達(dá)式如果條件為真

?則值為

X:否則值為

Y1)sizeof運(yùn)算符sizeof表示計(jì)算變量或表達(dá)式占用的存儲(chǔ)空間大小,即字節(jié)數(shù)。sizeof計(jì)算類(lèi)型占用字節(jié)數(shù)的形式為:sizeof(類(lèi)型)sizeof計(jì)算變量占用字節(jié)數(shù)的形式有兩種:sizeof(變量)或sizeof變量三技能點(diǎn)詳解——6雜項(xiàng)運(yùn)算符2)條件運(yùn)算符條件運(yùn)算符是C語(yǔ)言中唯一的三元運(yùn)算符,用符號(hào)?:表示,它帶有3個(gè)操作數(shù),其書(shū)寫(xiě)一般形式為:a?b:c其計(jì)算方法是先計(jì)算a,若a非0,則選擇b作為表達(dá)式值,否則選擇c作為表達(dá)式值,因此,條件運(yùn)算又稱(chēng)為選擇運(yùn)算。例如:程序代碼中有定義“inta=3,b=5,c;”則執(zhí)行代碼“c=a>b?a:b;”后的結(jié)果為c=5三技能點(diǎn)詳解——7運(yùn)算符優(yōu)先級(jí)

前面已簡(jiǎn)單介紹了C語(yǔ)言中的每個(gè)運(yùn)算符都有一定的優(yōu)先級(jí)和結(jié)合規(guī)則,表1.5.6按運(yùn)算符優(yōu)先級(jí)從高到低列出各個(gè)運(yùn)算符及其結(jié)合規(guī)則,具有較高優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在表格的上面,具有較低優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在表格的下面。

當(dāng)由多個(gè)不同運(yùn)算符和運(yùn)算數(shù)組成較為復(fù)雜的表達(dá)式時(shí),其運(yùn)算符計(jì)算順序按如下規(guī)則執(zhí)行:(1)不同級(jí)別的運(yùn)算符按運(yùn)算符的優(yōu)先級(jí)別確定計(jì)算順序,優(yōu)先級(jí)別高(優(yōu)先級(jí)別數(shù)小)的運(yùn)算符先計(jì)算,優(yōu)先級(jí)別低(優(yōu)先級(jí)別數(shù)大)的運(yùn)算符后計(jì)算;(2)相同級(jí)別的運(yùn)算符按結(jié)合規(guī)則確定計(jì)算順序。如表達(dá)式3+4*(17-5)/(1+2)的計(jì)算順序?yàn)椋孩僮筮吚ㄌ?hào)運(yùn)算(17-5),值為12,②右邊括號(hào)運(yùn)算(1+2),值為3,③左邊乘法運(yùn)算4*12,值為48,④右邊除法運(yùn)算48/3,值為16,⑤加法運(yùn)算3+16,值為19。案例1.5.1算術(shù)運(yùn)算編程實(shí)現(xiàn)兩個(gè)整型變量的算術(shù)運(yùn)算。/***********************************************內(nèi)容簡(jiǎn)述:兩個(gè)整型變量的算術(shù)運(yùn)算***********************************************/#include

<stdio.h>voidmain(void){

inta=19;

intb=10;

intc;

printf("a=%db=%d\n",a,b);

c=a+b;printf("a+b=%d\n",c);c=a-b;printf("a-b=%d\n",c);c=a*b;printf("a*b=%d\n",c);c=a/b;printf("a/b=%d\n",c);c=a%b;printf("a%%b=%d\n",c);c=a++;//賦值后再加1,c為19,a為20printf("賦給c的值是%da的值是%d\n",c,a);c=a--;//賦值后再減1,c為20,a為19printf("賦給c的值是%da的值是%d\n",c,a); c=++a;//先加1后賦值,c為20,a為20printf("賦給c的值是%da的值是%d\n",c,a);c=--a;//先減1后賦值,c為19,a為19printf("賦給c的值是%da的值是%d\n",c,a);}三技能點(diǎn)詳解——案例案例1.5.2關(guān)系運(yùn)算測(cè)得甲乙的體溫,通過(guò)編程判斷兩人是否發(fā)熱(超過(guò)37.3℃)。/************************************************內(nèi)容簡(jiǎn)述:判斷兩個(gè)數(shù)的大小關(guān)系***********************************************/#include

<stdio.h>

voidmain(void){

floatt=36.5;

floatT=37.3;

printf("測(cè)得甲的體溫為:%.2f\n",t);

if(t<T){printf("體溫小于37.3℃,甲沒(méi)有發(fā)熱\n");}

if(t>=T){printf("體溫大于或等于37.3℃,甲發(fā)熱\n");}

t=38.5;

printf("測(cè)得乙的體溫為:%.2f\n",t);

if(t<T){printf("體溫小于37.3℃,乙沒(méi)有發(fā)熱\n");}

if(t>=T){printf("體溫大于或等于37.3℃,乙發(fā)熱\n");}}三技能點(diǎn)詳解——案例案例1.5.3邏輯運(yùn)算編程實(shí)現(xiàn)兩個(gè)量的三個(gè)邏輯運(yùn)算。/********************************************************內(nèi)容簡(jiǎn)述:

判斷兩個(gè)量的邏輯運(yùn)算結(jié)果*******************************************************/#include

<stdio.h>

intmain(){

inta=5;

intb=20;

intc;

printf("a=%db=%d\n",a,b); c=a&&b;//a和b均為非0值,都為真,a&&b值為1 printf("a&&b的值為%d\n",c);

if(a&&b)//判斷a和b兩條件是否都為真{printf("a和b全為真\n");}c=a||b;//a和b均為非0值,都為真,a||b值為1 printf("a||b的值為%d\n",c);

if(a||b)//判斷a和b兩條件中是否至少有一個(gè)為真{printf("a和b至少有一個(gè)為真\n");}

a=0;//改變a和b的值b=10;

printf("a=%db=%d\n",a,b); c=a&&b;//a==0,為假,a和b不全為真,a&&b值為0 printf("a&&b的值為%d\n",c);

if(a&&b){printf("a和b全為真\n");}c=!(a&&b);//a==0,為假,a和b不全為真,a&&b值為0,!(a&&b)為1 printf("!(a&&b)的值為%d\n",c);

if(!(a&&b)){printf("a和b不全為真\n");}}三技能點(diǎn)詳解——案例案例1.5.4位運(yùn)算輸出26與15的各種位運(yùn)算結(jié)果/********************************************************內(nèi)容簡(jiǎn)述:

位運(yùn)算*******************************************************/#include

<stdio.h>

voidmain(void){

unsigned

inta=26;//26=00011010

unsigned

intb=15;//15=00001111

intc=0;

c=a&b;//00011010&00001111=00001010=10printf("Line1-c的值是%d\n",c);

c=a|b;//00011010|00001111=00011111=31printf("Line2-c的值是%d\n",c);

c=a^b;//00011010^00001111=00010101=21printf("Line3-c的值是%d\n",c);

c=~a;//~00011010=10011011=-27printf("Line4-c的值是%d\n",c);

c=a<<2;//00011010左移兩位為01101000=104printf("Line5-c的值是%d\n",c);

c=a>>2;//00111100右移兩位為00000110=6printf("Line6-c的值是%d\n",c);}三技能點(diǎn)詳解——案例案例1.5.5賦值運(yùn)算編程檢驗(yàn)各種賦值運(yùn)算符號(hào)的功能。/********************************************************內(nèi)容簡(jiǎn)述:簡(jiǎn)單賦值與復(fù)合賦值運(yùn)算*******************************************************/#include

<stdio.h>

voidmain(void){

inta=21;

intc;

c=a;printf("=運(yùn)算符實(shí)例,c的值=%d\n",c);c+=a;//c=c+aprintf("+=運(yùn)算符實(shí)例,c的值=%d\n",c);c-=a;//c=c-aprintf("-=運(yùn)算符實(shí)例,c的值=%d\n",c);c*=a;//c=c*aprintf("*=運(yùn)算符實(shí)例,c的值=%d\n",c);c/=a;//c=c/aprintf("/=運(yùn)算符實(shí)例,c的值=%d\n",c);c=200;c%=a;//c=c%aprintf("%%=運(yùn)算符實(shí)例,c的值=%d\n",c);c<<=2;//c=c<<2printf("<<=運(yùn)算符實(shí)例,c的值=%d\n",c);c>>=2;//c=c>>2printf(">>=運(yùn)算符實(shí)例,c的值=%d\n",c);c&=2;//c=c&2printf("&=運(yùn)算符實(shí)例,c的值=%d\n",c);c^=2;//c=c^2printf("^=運(yùn)算符實(shí)例,c的值=%d\n",c);c|=2;//c=c|2printf("|=運(yùn)算符實(shí)例,c的值=%d\n",c);}三技能點(diǎn)詳解——案例案例1.5.6雜項(xiàng)運(yùn)算編程檢驗(yàn)各種賦值運(yùn)算符號(hào)的功能。/********************************************************內(nèi)容簡(jiǎn)述:

雜項(xiàng)運(yùn)算符的使用*******************************************************/#include

<stdio.h>

voidmain(void){

inta=4;

shortb;

doublec;

int*ptr;

/*sizeof運(yùn)算符實(shí)例*/printf("整型變量a的大小=%lu\n",sizeof(a));printf("短整型變量b的大小=%lu\n",sizeof(b));printf("雙精度實(shí)型變量c的大小=%lu\n",sizeof(c));

/*&和*運(yùn)算符實(shí)例*/ptr=&a;//'ptr'現(xiàn)在包含'a'的地址printf("a的值是%d\n",a);printf("*ptr是%d\n",*ptr);

/*三元運(yùn)算符實(shí)例*/a=10;b=(a==1)?20:30;printf("b的值是%d\n",b);b=(a==10)?20:30;printf("b的值是%d\n",b);}三技能點(diǎn)詳解——案例案例1.5.7運(yùn)算優(yōu)先級(jí)輸入兩組整數(shù),求出兩組輸入整數(shù)中較大整數(shù)的和。/********************************************************內(nèi)容簡(jiǎn)述:求兩組輸入

溫馨提示

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