C語言程序設計 課件 任務1.5 運算符與表達式_第1頁
C語言程序設計 課件 任務1.5 運算符與表達式_第2頁
C語言程序設計 課件 任務1.5 運算符與表達式_第3頁
C語言程序設計 課件 任務1.5 運算符與表達式_第4頁
C語言程序設計 課件 任務1.5 運算符與表達式_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計基礎與實踐模塊一編程技術基礎任務1.5運算符與表達式C語言程序設計基礎與實踐課程組04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務1.5運算符與表達式01問題引入05技能點檢測一問題引入

計算機處理的基本對象是數(shù)據(jù)。變量和常量則是程序的最基本的數(shù)據(jù)形式,將它們用操作符(也稱為運算符)連接起來,便構成了表達式。

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

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

”7個,其中+、

、*、/、%是二元運算符,++、

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

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

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

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

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

1a++或++a將得到

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

1a--或--a將得到

11)求余運算符%

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

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

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

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

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

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

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

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

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

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

C=C%A<<=左移且賦值運算符C<<=2等同于

C=C<<2>>=右移且賦值運算符C>>=2等同于

C=C>>2&=按位與且賦值運算符C&=2等同于

C=C&2^=按位異或且賦值運算符C^=2等同于

C=C^2|=按位或且賦值運算符C|=2等同于

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

4,其中

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

?則值為

X:否則值為

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

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

當由多個不同運算符和運算數(shù)組成較為復雜的表達式時,其運算符計算順序按如下規(guī)則執(zhí)行:(1)不同級別的運算符按運算符的優(yōu)先級別確定計算順序,優(yōu)先級別高(優(yōu)先級別數(shù)小)的運算符先計算,優(yōu)先級別低(優(yōu)先級別數(shù)大)的運算符后計算;(2)相同級別的運算符按結合規(guī)則確定計算順序。如表達式3+4*(17-5)/(1+2)的計算順序為:①左邊括號運算(17-5),值為12,②右邊括號運算(1+2),值為3,③左邊乘法運算4*12,值為48,④右邊除法運算48/3,值為16,⑤加法運算3+16,值為19。案例1.5.1算術運算編程實現(xiàn)兩個整型變量的算術運算。/***********************************************內(nèi)容簡述:兩個整型變量的算術運算***********************************************/#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);}三技能點詳解——案例案例1.5.2關系運算測得甲乙的體溫,通過編程判斷兩人是否發(fā)熱(超過37.3℃)。/************************************************內(nèi)容簡述:判斷兩個數(shù)的大小關系***********************************************/#include

<stdio.h>

voidmain(void){

floatt=36.5;

floatT=37.3;

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

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

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

t=38.5;

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

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

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

判斷兩個量的邏輯運算結果*******************************************************/#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兩條件中是否至少有一個為真{printf("a和b至少有一個為真\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");}}三技能點詳解——案例案例1.5.4位運算輸出26與15的各種位運算結果/********************************************************內(nèi)容簡述:

位運算*******************************************************/#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);}三技能點詳解——案例案例1.5.5賦值運算編程檢驗各種賦值運算符號的功能。/********************************************************內(nèi)容簡述:簡單賦值與復合賦值運算*******************************************************/#include

<stdio.h>

voidmain(void){

inta=21;

intc;

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

雜項運算符的使用*******************************************************/#include

<stdio.h>

voidmain(void){

inta=4;

shortb;

doublec;

int*ptr;

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論