• /  84
  • 下載費用: 29.9積分  

《運算符與表達式》PPT課件.ppt

'《運算符與表達式》PPT課件.ppt'
第3章 運算符與表達式 本章將介紹C語言中的運算符與表達式的種類、優先級和結合性。通過本章的學習,使讀者掌握幾種常見的運算符和表達式的求值規則和特點,包括算術、關系、邏輯、條件、賦值等運算符和表達式,并掌握不同類型數據之間的轉換規律。 運算符與表達式的概述 算術運算符及算術表達式 關系運算符及關系表達式 邏輯運算符及邏輯表達式 其他運算符的應用 運算符的優先級與結合性 3.1 運算符與表達式的概述 在C語言中表達式主要有算術表達式、關系表達式、邏輯表達式、賦值表達式、條件表達式和逗號表達式等。 3.1.1 運算符 運算符是表示運算類型和規則的特定符號。C語言中的主要運算符及其含義如表3.1所示。 表3.1 運算符及其含義運算符類型運算符號含 義算術運算符+,–,*,/,%等對數值進行算術常規運算關系運算符>,=,>,<<,~,|,^,&對二進制數進行處理賦值運算符=把表達式的值賦予變量條件運算符?,:依據條件判斷結果返回相應的值逗號運算符,多個表達式的組合指針運算符*,&指針類型特有的運算續 表運算符類型運算符號含 義求字節數運算符sizeof求取變量存儲的字節數強制類型轉換運算符(類型名)針對不同數據類型的相互轉換分量運算符. , →用于結構體成員的引用下標運算符[]用于取數組元素值3.1.2 表達式的定義 在C語言中表達式是通過各種運算符把多個運算對象組合起來而形成的式子,運算對象包括常量、變量及函數。 例如: int radius; float girth,pi=3.14; girth=2*pi*radius; 其中,表達式2*pi*radius是由常量2、變量pi及radius組成的。 通常,單個的常量、變量和函數也可以看做是一個表達式。 例如:int radius;等都可以看做表達式。 3.1.3 表達式的值 表達式無論長短,最終應該計算出一個確定的值,其結果的類型取決于表達式的類型及表達式中混合運算時的類型轉換。 例如: int num1,num2=15; float f1,f2=2.15; char ch1,ch2=‘a’; num1=f2*ch2-15; f1=f2*ch2-15; ch1=f2*ch2-15; 可見,表達式結果的類型取決于表達式的類型, 如num1=f2*ch2-15,其結果是整型; f1=f2*ch2-15,其結果是實型。 3.2 算術運算符及算術表達式 C語言中的運算符范圍很廣,把除了控制語句和輸入輸出外的基本操作都作為運算符處理。其中以算術運算符最重要,本節將重點介紹。 3.2.1 算術運算符 算術運算符是對數據進行的算術運算。常見的算術運算符及其含義如表3.2所示。 表3.2 算術運算符及其含義算術運算符含 義實 例+加法運算符或正號如25+15,+35–減法運算符或負號如85–30,–25*乘法運算符如15*25/除法運算符如85/15(值為5)%求模運算符如85%15(值為10)++自增運算符如15++--自減運算符如15--3.2.2 算術表達式的定義 關于算術表達式應注意以下幾點: (1)兩個整數相除其結果也為整數,如75/15=5,18/26=0;兩個整數求模運算其結果應為這兩個整數相除的余數,如85%15=10,18%26=18。 例3.1 求任意兩個數相除得到的結果及余數。 程序 #include main() { int num1,num2,num3,num4; printf("Please input two numbers:"); scanf("%d,%d\n",&num1,&num2); num3=num1/num2; num4=num1%num2; printf("The result is%d.\n",num3); printf("The residue is%d.\n",num4); } 輸入 Please input two numbers:75,15↙ 輸出 The result is5. The residue is10. (2)自增運算符(++)與自減運算符(--)都是單目運算符,通常運算的對象是整型變量,而不是表達式,它們的作用分別是讓變量的值加1或減1。如i++相當于i=i+1;i--相當于i=i-1。在進行運算時,運算符可以位于變量的左邊,也可以位于其右邊,具體含義不同。 1)++i,--i:含義是在使用i之前,先使i的值加(減)1。 2)i++,i--:含義是在使用i之后,使i的值加(減)1。 例3.2 自增、自減運算符實例。 程序 #include main() { int i=10; int j,k; j=i++; k=++i; printf("i=%d,j=%d,k=%d\n",i,j,k); j=i--; k=--i; printf("i=%d,j=%d,k=%d\n",i,j,k); } 輸出 i=12,j=10,k=12 i=10,j=12,k=10 分析 在程序第6行中,先將i的值10賦予j,然后i自增,其值為11;第7行中,i先自增后,再將其值12賦予k;因此第1個輸出語句中i=12,j=10,k=12。第9行中,先將i的值12賦予j,然后i自減,其值為11;第10行中,i先自減后,再將其值10賦予k,因此第2個輸出語句中i=10,j=12,k=10。 (3)算術運算符的優先級,可以從以下幾點理解。 1)先進行乘除運算,再進行加減運算,結合方向是從左至右。 2)取負和自增自減運算符的優先級相同,結合方向是從右至左。 3)取負和自增自減運算符的優先級高于加減乘除運算符。 例3.3 算術運算符優先級實例。 程序 #include main() { int num,num1,num2,num3,num4; printf("Please input num1="); scanf("%d\n",&num1); num2=-num1++; num3=-++num2; num4=--num3; num=num1+num2*num3-num4; printf("num=%d,num3=%d,num4=%d\n",num,num3,num4); } 輸入 Please input num1=10↙ 輸出 num=-69,num3=8,num4=8 分析 在程序第5行中,系統獲得用戶輸入的num1=10;在程序第7行中,num1取反得-10賦予num2,其自身自增得11;在程序第8行中,num2自增后得9,然后取反得9賦予num3;在程序第9行中,num3自減。省略部分。。逗號運算符是一個雙目運算符,其作用是把兩個表達式連接起來。其一般形式如下: 表達式1,表達式2,表達式3,…,表達式n 逗號運算符的優先級是所有運算符中最低的,它的運算規則是從左至右。如逗號表達式“x=(y=5,y*5),z”的值為25。逗號表達式一般并不是要得到整個逗號表達式的值,而只是需要對其中的多個表達式分別計算。它常用于for循環語句中。 例3.14 求表達式1+2+3+…+10和1×2×3×…×10的值。 程序 #include main() { int i,x=0; int j,y=1; for(i=1,j=1;i<=10,j<=10;i++,j++) { x=x+i; y=y*j; } printf("x=1+2+3+…+10=%d\n",x); printf("y=1*2*3*…*10=%d\n",y); } 輸出 x=1+2+3+…+10=55 y=1*2*3*…*10=24320 注意:并不是任何位置出現的逗號都是逗號運算符。如在語句printf(“%d,%d\n”,x,y);中的逗號就不是逗號運算符;而語句printf(“%d,%d\n”,(x,y,z),y);中(x,y,z)的逗號就是逗號運算符。 3.6 運算符的優先級與結合性 在C語言中存在著大量不同的運算符,當多個運算符同時出現在同一表達式中時,就需要依據運算符的優先級進行運算。常見運算符優先級及結合性如表3.5所示。 表3.5 常見運算符優先級及結合性優先級順序運算符對象個數結合方向1(),[],.,→自左至右2!,~,++,--,*(指針),&、sizeof單目運算符自右至左3*(乘),/(除),%雙目運算符自左至右4+,–雙目運算符自左至右5<>(右移)雙目運算符自左至右6<,,>=雙目運算符自左至右7==,!=雙目運算符自左至右8&(按位與)雙目運算符自左至右9^(按位異或)雙目運算符自左至右10|(按位或)雙目運算符自左至右11&&(邏輯與)雙目運算符自左至右12||(邏輯或)雙目運算符自左至右13?:(條件)自右至左14=,+=,-=等雙目運算符自右至左15,自左至右 對于運算符的優先級應注意以下兩點: (1)同一優先級的運算符,運算次序由結合方向決定。如<和<=都是關系運算符,屬于同一優先級,其結合方向是自左至右。 (2)不同的運算符要求有不同的運算對象個數。如<和<=都是雙目運算符,需要在運算符的兩邊各有1個運算對象。 3.7 程序舉例 例3.15 編寫程序,從鍵盤輸入字母,若為大寫字母將其轉換成小寫字母;若為小寫字母將其轉換成大寫字母。 算法 根據小寫字母的ASCII碼比大寫字母的ASCII碼大32,編寫程序。 程序 #include main() { char ch; printf("Please input a letter ch="); scanf("%c\n",&ch); if(ch>='A'&&ch='a'&&ch<='z') printf("The capital letter of \'%c\' is%c\n",ch,ch-32); else printf("Input error,please input again!"); } 輸入 Please input a letter ch=A↙ 輸出 The small letter of 'A' is a 例3.16 編寫程序求下列表達式的值,其中字母a和n由用戶自己輸入。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2) (6)a+=a-=a*=a 程序 #include main() { int a,n,t; printf("Please input the variables of a and n:"); scanf("%d,%d\n",&a,&n); t=a; printf("(1)%d\t\t",a+=a); a=t; printf("(2)%d\n",a-=2); a=t; printf("(3)%d\t\t",a*=2+3); a=t; printf("(4)%d\n",a/=a+a); a=t; printf("(5)%d\t\t",a%=(n%=2)); a=t; printf("(6)%d\n",a+=a-=a*=a); } 輸入 Please input the variables of a and n:12,5↙ 輸出 (1)24 (2)10 (3)60 (4)0 (5)0 (6)0 分析 在程序第5行中,系統獲得用戶輸入的a=12,n=5;在程序第8行中,通過賦值運算a+=a后,變量a的值發生了變化,因此,需對變量a重新做賦值操作“a=t”。 本章小結 本章介紹了C語言中運算符和表達式的種類,以及常見運算符和表達式的運算規則。重點講解了算術運算符與算術表達式、關系運算符與關系表達式、賦值運算符與賦值表達式以及邏輯運算符與邏輯表達式,此外還介紹了自增/自減運算符、條件運算符與條件表達式、逗號運算符與逗號表達式。 習 題 三 一、填空題 1.C語言中的表達式包括___________、___________、___________、__________、_________和__________。 2.C語言中的結合方向有__________和___________。 二、選擇題 1.在下列運算符中,優先級最高的運算符是( )。 A.<= B.% C.= D.&& 2.在C語言中,double類型數據占( )個字節;char類型數據占( )個字節。 A.1 B.2 C.4 D.8 三、上機操作題 1.寫出下列程序的運行結果。 #include main() { char c1,c2,c3,c4,c5; c1='a';c2='b';c3='c';c4='\101';c5='\116'; printf("a%c\tb%c\tc%c\tabc\n",c1,c2,c3); printf("\t\b%c\t%c", c4,c5); } 2.寫出下列程序的運行結果。 #include main() { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf("i=%d\tj=%d\nm=%d\tn=%d\n",i,j,m,n); }
關 鍵 詞:
運算符與表達式 ppt
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:《運算符與表達式》PPT課件.ppt
鏈接地址: http://www.476824.live/p-51579151.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 吉林十一选五分布走势图一定牛 494949最快开奖结果+香港 幸运28开奖结果走势图 怎样配资炒股 河北11选五有没有技巧 一分快三大小单双技巧 澳门博彩有限公司 融资买股票怎么操作 幸运快三 出号规律 河北快3投注