




已閱讀5頁,還剩24頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三講 運算符和表達式,一、表達式,二、算術運算符和算術表達式,四、算術表達式中數據類型的轉換,三、標準庫函數調用,六、增量運算符與增量表達式,七、逗號運算符與逗號表達式,五、賦值運算 1、賦值運算符和賦值表達式 2、復合賦值運算,一、表達式,表達式:由常量、變量、函數和運算符組成的式子稱為表達式。,例:計算圓面積的語句: s = 3.14159 * r * r ; 該語句中, r,3.14159,3.14159 * r , 3.14159 * r * r ,s = 3.14159 * r * r 都是表達式 其中,*是運算符,r是變量,3.14159是常量,表達式的求值規則,按照運算符的優先級和結合性的規定順序進行。,有的運算符只需要一個運算對象,這種運算符稱為單目運算符; 如5中的()負號 需要兩個運算對象的稱為雙目運算符; 如加(),減(),乘(*),除(/),一個表達式有一個值及其類型,它們等于計算表達式所得結果的值和類型。,二、算術運算符和算術表達式,算術運算符:算術運算符用于各類數值運算。算表達式中的運算對象都是算術量,即整型、實型或字符型。,下表為基本的算術運算符:,其中單目運算符負號()的優先級最高,為2,除法運算符“/”進行求商運算。對于不同類型的運算對象,除法表達式計算結果的類型也會不同。,例:計算x/y 如果x,y是整型,則結果為整型,小數部分被略去。 如果x,y中有一個實型量,則x,y都被轉化為double類型進行運算,結果為double類型量,運算實例: x,y為整型量: 5/2結果為2,整型量 2/5結果為0,整型量,x,y其中一個為實型量 : 5.0/2或5/2.0或5.0/2.0結果為2.5,實型量,“”是求余運算。ab計算a除以b后的余數,也是a模b的值。它要求兩個運算對象都是整型量,其結果也是整型量。,例:52結果為1 25結果為0,例:將數學式改寫成算術表達式,一般數學式 a(b+c)+dac,算術表達式 (a*(b+c)+d)*a*c 將方括號改成圓括號,*不能省略,x/(x+y)+1.0/x*y 其中不能出現分數,改用除法運算符,圓括號不能缺少,3.14159*r*r/2.0 其中 為非字母字符,要用實型常量代替,例:基本數學運算符程序實例,main ( ) int a, b, c1, c2 ; a=3, b=-7 ; c1=b/a; c2=b%a; printf( “c1=%dtc2=%dn“, c1,c2 ); c1=a/b; c2=a%b; printf( “c1=%dtc2=%dn“, c1,c2 ); ,程序運行輸出: c1=-2 c2=-1 c1=0 c2=3,三、標準庫函數調用,對于某些數學運算,如求平方根,指數、對數運算,C語言中有標準庫函數對其進行計算。,調用函數格式: 函數名(參數,參數,),其中函數名有由系統提供,不同C的編譯系統,提供的函數名不同,使用時需查閱相關手冊。,調用函數時,參數的類型必須與系統規定一致。,調用標準庫函數之前,通常要用預編譯命令“# include”將所需要的庫函數信息包含到用戶源文件中。,如:在使用數學庫函數以前,需使用編譯命令 include “math.h”,例:計算 的值, include “math.h” main( ) double x,y; x=5.0; y=7.0; printf(“z=fn”,x*(2.0+pow(x,y); ,四、算術表達式中數據類型的轉換,當表達式中的各類數值型數據參與混合運算時,要進行類型轉換。,轉換方式 自動轉換:數據類型自動由低級向高級轉換。 強制轉換:將表達式的運算結果強制轉換成指定的數據類型。,如下表達式是合法的: 13.14159+0+A,自動轉換規則:,例:數據類型自動轉換實例,有如下變量類型: char c; int i; float f; double d; 計算表達式: c+f+i+d,char float int double,c + f + i + d,int double,double double,double,double,強制轉換:,格式: (數據類型說明符)(表達式),注意: 1)強制轉換屬單目運算,運算優先級為2。 2)強制轉換得到的是中間變量類型,原變量 類型不變。,例:int x, y; float z; (float)(x+y); (int)z+x;,五、賦值運算,1、賦值運算符和賦值表達式,賦值表達式的一般格式為: 變量表達式,說明:,賦值運算符左邊必須是變量而不能是表達式;,賦值表達式的值是賦值號左邊變量被賦值后的值;,例:j+3=j a*b=c*4,左邊的語句是錯誤的,賦值語句左邊只能是變量,如果賦值號兩邊的類型不一致,則將賦值號右邊表達式的值的類型轉換成賦值號左邊變量的類型;,例:float f=1.0; int a=2,b=3; char c=A; f=a+b+c;,賦值表達式f=a+b+c的值,也就是f的值為實型量,結果為70.0,賦值語句可以連續進行。,例:a=b=c=0,該表達式等價于a=(b=(c=0),2、復合賦值運算,算術運算符“+ * / %”和賦值運算符“=”結合起來,形成復合賦值運算符。,變量 OP= 表達式 等價于 變量 = 變量 OP 表達式,用OP表示“+ * / %”,則復合賦值表達式格式為:,+= :加賦值運算符; 如a+=b+3,等價于 a=a+(b+3),-= :減賦值運算符; 如a-= b+ 3,等價于 a=a- (b+3) *= :乘賦值運算符; 如a*= b+ 3,等價于 a=a* (b+3) /= :除賦值運算符; 如a/= b+ 3,等價于 a=a/ (b+3) %= :取余賦值運算符 a%= b+ 3,等價于 a=a% (b+3),復合運算符左邊必須是變量;,注意:,復合運算符右邊的表達式計算完成后才參與復合賦值運算;,復合賦值運算符的結合性和優先級等同于簡單的賦值運算符“=”。,復合運算符常用于某個變量自身的變化,尤其當左邊的變量名很長時,使用復合運算符書寫更方便。,復合運算符在書寫時,兩個運算符之間不能有空格。,例:賦值語句程序實例,main( ) int a, b, c; a=b=c=5; printf(”a=%d, b=%d, c=%dn”,a,b,c); a=(b=4)+(c=6); printf(”a=%d, b=%d, c=%dn”,a,b,c); a+=b+c; printf(”a=%d, b=%d, c=%dn”,a,b,c); a+=a-=a*=a; printf(”a=%dn”,a); ,程序運行結果: a=5, b=5, c=5 a=10, b=4, c=6 a=20, b=4, c=6 a=0,六、增量運算符與增量表達式,類別: 單目運算,運算優先級為2,運算符: + 使變量的值增 1 - 使變量的值減 1,結合性及執行過程: 后綴 左結合 i 前綴 右結合 i i,自增、自減運算只能用于變量,不能用于常量和表達式。,注意:,例 +6, +(a+b)均為非法的運算,自增、自減運算符高于基本算術運算符。,自增、自減運算符的運算順序。,例:自增、自減運算符程序實例1,main ( ) int x, y, t=3; printf(“t=%d:n“, t ); x=t+; printf(“x=%d, t=%dn“, x, t); t=3; printf(“t=%d:n“, t ); y = +t ; printf(“y=%d, t=%dn“, y, t); ,程序運行結果: t=3: x=3, t=4 t=3: y=4, t=4,例:自增、自減運算符程序實例2,main( ) int i, j, k ; i=1; j=1; k=i+j ; printf(“k=%d,i=%d,j=%dn“,k,i,j); ,程序運行結果: k=2,i=2,j=1,表達式 x+y 等價于(x+)+y,例:自增、自減運算符程序實例3,main() int i, k ; i=3; k=i+i+i+ ; printf(“1) k=%dt i=%dn“, k,i); i=3; k = (+i)+(+i)+(+i) ; printf(“2) k=%dt i=%dn“, k,i); ,程序輸出: 1) k=9 i=6 2) k=18 i=6,例:自增、自減運算符程序實例4,main ( ) int x, a, b, c, d ; x=3; printf(“%dt%dt%dt%dn“, x, x+, x, x-); a=x=3; b=x+ ; c=x; d=x-; printf(“%dt%dt%dt%dn“,a, b, c, d ); ,程序運行結果: 3 2 2 3 3 3 4 4,七、逗號運算符與逗號表達式,逗號運算符,或稱順序求值運算符 運算符:, 運算優先級:最低,15級 結合性:左結合,逗號表達式:由逗號運算符連接起來的兩個或兩個以上的表達式。,格式: 表達式1,表達式2, ,表達式n,求解過程:先求表達式1的值,再求表達式2的值,直至求出表達式n的值。整個表達式的值為表達式n的值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豆類食品加工企業生產計劃與調度考核試卷
- 肉類加工過程中的質量監控技術考核試卷
- 新生兒喂養指導要點
- 院前急救與護理要點解析
- 誼安呼吸機510臨床操作與產品解析
- Guamecycline-生命科學試劑-MCE
- 單站閃電定位儀在哪些場景應用
- 新疆棉紡織產業發展現狀與趨勢調研報告
- 2025年下半年保險行業策略報告:新增負債成本顯著下降板塊兼具基本面及資金面催化
- 新能源汽車在城市公共交通中的應用與城市能源結構轉型報告
- 杭州市富陽區衛健系統事業單位招聘筆試真題2024
- 2023-2024學年貴州省黔南州都勻市統編版三年級下冊期末考試語文試卷
- 2025遼寧沈陽副食集團所屬企業招聘25人筆試參考題庫附帶答案詳解析集合
- 2024年福建省廈門市思明區初中畢業班適應性練習(二)地理試卷
- 創造良好工作氛圍的有效途徑
- 2025年心理學基礎考試試卷及答案
- 2025上海電子信息職業技術學院輔導員考試試題及答案
- 三大國企面試題及答案
- 無人機設計與架構試題及答案
- 2025年航天知識競賽題庫及答案
- 游泳救生員勞務合同協議
評論
0/150
提交評論