版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、(中職)C語言程序設(shè)計模塊四課件運算符C語言的血液模塊44.1第1級:()、 、-、.(1)()運算符:在多個運算符中,括號運算優(yōu)先運算。這個與數(shù)學(xué)運算方式保持一致。例如:int a;a=a+(a=4); /*先()號運算,給變量a賦常量值4;因為“+”運算高于賦值“”運算,故先執(zhí)行4+4運算;最后執(zhí)行賦值“”運算,結(jié)果a值等于8*/printf(%d,a); /*輸出8*/(2)為變址運算符(后述)。(3)-為指向結(jié)構(gòu)體成員運算符(后述)。 (4).為結(jié)構(gòu)體成員運算符(后述)。1.!:邏輯非運算4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(1)其值為:非0即1,即只
2、有0和1兩個邏輯值。例如:int a=6,b=0,c=0,d; d=!a+!b+!c;/*!a結(jié)果為0;!b結(jié)果為1;!c結(jié)果為1;故d最后得2*/printf(%d-%d,!d,d); /*輸出0-2*/(2)要領(lǐng)會條件語句中的含義。例如:if條件判斷中,if(x)等同于if(x!=0),而if(!x)則等同于if(x=0)。while循環(huán)條件判斷中,while(x)等同于while(x!=0),而while(!x)則等同于while(x=0)。2.:按位取反運算(簡稱位非運算)4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(1)正整數(shù)的位非運算。由于正整數(shù)的原反補一
3、致,故直接對原碼取反,得新原碼,此時最高位變1,即為負,對該新原碼求補碼即得位非值??梢姡麛?shù)位非結(jié)果變負。例如:int a=6; printf(%d,a); /*輸出-7*/計算方法如下:2.:按位取反運算(簡稱位非運算)4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(2)負整數(shù)的位非運算。由于負整數(shù)在內(nèi)存中是以補碼形式存在的,所以必須先對負整數(shù)求補碼,再取反。此時最高位為0,為正,正數(shù)原反補一致,直接計算結(jié)果即得位非值??梢姡撜麛?shù)位非結(jié)果變正。例如:int a=-6; printf(%d,a);/*輸出5*/計算方法如下:3.+、-:自增自減運算符4.2第2級:
4、 !、+、-、+、-、(類型)、&、*、sizeof()(1)前置時,如+i,-j,要先增減后運算。(2)后置時,如i+,j-,要先運算后增減。(3)只能用于單個變量自增自減,不能用于表達式,如(x+y)+或-(x+y)是錯誤的;也不能用于常量,如+3,4-等也都是錯誤的。 例如:int i=3; printf(%d-%dn,i+,+i);/*printf()函數(shù)里的運算是從右往左的,故先計算+i,即先自增1到4,再做輸出運算,輸出4;執(zhí)行i+時,先做輸出運算,輸出4,再自增1,i實際變?yōu)?。故輸出4-4*/printf(%dn,i);/*輸出自增后的值,即5*/3.+、-:自增自減運算符4.
5、2第2級: !、+、-、+、-、(類型)、&、*、sizeof()再如:int x=2,y=3,d;d =y*x+(y-)+(+x);/*先執(zhí)行+x,變量x增1得值3,而y-要先運算再自減,故先不動,則右邊為3*3+3+3,得15,故d被賦值 15,y參加了運算,再自減1,為2*/printf(d%d,x=%d,y=%dn,d,x,y);/*輸出d=15,x=3,y=2*/(4)結(jié)合方式:自左向右。例如:a+b-c;/*實際上就是:(a+)+(b-)-c;*/(5)i+本質(zhì)就是i=i+1。4.(類型):強制數(shù)據(jù)類型轉(zhuǎn)換運算符4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()
6、數(shù)據(jù)類型的轉(zhuǎn)換有兩種,一種是自動轉(zhuǎn)換,另一種是強制轉(zhuǎn)換。(1)自動轉(zhuǎn)換:由低向高自動轉(zhuǎn)換,其中有兩個必然轉(zhuǎn)換。 float型在運算時一定會先自動轉(zhuǎn)換成double型。short和char型在運算時一定會先自動轉(zhuǎn)換成int型。4.(類型):強制數(shù)據(jù)類型轉(zhuǎn)換運算符4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(2)強制轉(zhuǎn)換:分為顯式強制轉(zhuǎn)換和隱形強制轉(zhuǎn)換,顯式強制轉(zhuǎn)換必須用()號把轉(zhuǎn)換類型括起來。例如:/*顯式強制轉(zhuǎn)換:*/(int)3.58; /*強制轉(zhuǎn)換3.58為整型,即為3*/int x=25,m; float y=25.0;printf(%fn,(float)x);
7、 /*強制轉(zhuǎn)換變量x為浮點型,輸出值為25.000000*/* 隱形強制轉(zhuǎn)換:*/m=x+y;/*m是int型,故x+y雖是浮點型,但賦給m時強制轉(zhuǎn)換為int型,即m=50*/printf(%d,m); /*輸出50*/5.&地址與運算符和*指針運算符4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(1)&地址與運算。例如:int a; scanf(%d,&a); /*給變量a輸入值,就是輸入一個常值到a的內(nèi)存空間中。不可忘記&*/(2)*指針運算:定義指針變量。對地址進行取內(nèi)容運算。例如:int a=5; int *p=&a; /*等同于“int *p; p=&a;”,
8、定義一個整型指針p并指向變量a的地址*/printf(%d,*p); /*這里*p的含義是:對指針p進行取內(nèi)容運算。因為p指向了變量a的地址,因此就是*(&a)運算,即對變量a的地址進行取內(nèi)容運算,即為5*/6.sizeof():內(nèi)存空間長度運算4.2第2級: !、+、-、+、-、(類型)、&、*、sizeof()(1)sizeof()計算的結(jié)果都是整型(int)值。(2)16位編譯環(huán)境下指針的內(nèi)存長度為2 B(32位環(huán)境下為4 B)。float f_x;float *p=&f_x;printf(%dn,sizeof(f_x); /*計算變量f_x的內(nèi)存空間長度,輸出4*/printf(%dn
9、,sizeof(p); /*計算指針變量p的內(nèi)存空間長度,輸出2*/4.3第3級:*、/、% (1)*乘法運算符(略)。(2)/除法運算符。除法規(guī)則:若兩邊均為整型,則結(jié)果去掉小數(shù)部分只取整數(shù)部分。例如:printf(%d,5/2); /*取整,輸出2*/若有實數(shù),則結(jié)果為浮點型。例如:printf(%f,5/2.0);/*2.0為實數(shù),輸出2.500000*/4.3第3級:*、/、% (3)%模運算(求余運算)。運算規(guī)則:要求兩邊都為整型。例如:printf(%d,5%2);/*輸出1*/ ;printf(%d,5%2.0);/*程序報錯*/最常用法:判斷一個數(shù)是偶數(shù)還是奇數(shù)。例如,有整型變
10、量x,若x%2=0,則x為偶數(shù),x%2=1則為奇數(shù)。被除數(shù)為負,無論除數(shù)符號如何,結(jié)果都為負。除數(shù)的符號對結(jié)果無影響。例如:3%2=1,3%-2=1-3%2=-1,-3%-2=-1 加法運算和減法運算比較簡單,不再詳細介紹。4.4第4級:+(加)、-(減)4.5第5級:(右移)位移運算符(1)移位規(guī)則:正整數(shù)位移左移右補0,右移左補0。例如:int a=7,b=7;printf(%d-%d,a2); /*a左移2位后結(jié)果為28,b右移2位后結(jié)果為1*/4.5第5級:(右移)位移運算符負整數(shù)位移先求補碼再位移,左移右補0,右移左補1,位移后得到的是新原碼,再進行求補碼運算即得位移結(jié)果。例如:in
11、t a=-7,b=-7;printf(%d-%d,a2);/*輸出-28和-2*/4.5第5級:(右移)位移運算符(2)當(dāng)位移與位非結(jié)合時,由于位非級別高于位移,要注意須先進行位非運算。例如:int a=7,b=-7;printf(%d-%d,a2); /*輸出-32和1*/a2:先a運算,結(jié)果是-8,再-82:先b運算,結(jié)果是6,再62,6/22,結(jié)果為1。4.6第6級:關(guān)系運算符:、= 常用于if條件控制語句和循環(huán)條件語句中。要特別注意不要把賦值符號“=”當(dāng)作“等于”符號。“”符號處于第14級的位置。4.7第7級:等于符號=和不等于符號= 4.8第8級:&按位與運算符運算法則:1&1為1,
12、其他為0(1&0、0&1、0&0)。例如:int a=7,b=-7; printf(%d,a&b); /*輸出1*/運算過程如右。思考:任意一個數(shù)與0進行&運算,結(jié)果如何?4.9第9級:按位異或運算符運算法則:11為0,00為0,10為1,01為1。例如:int a=7,b=-7;printf(%d,ab);/*輸出-2*/運算過程如右。思考:任意一個數(shù)與0進行運算,結(jié)果如何?4.10第10級:|按位或運算符運算法則:1|1為1,1|0為10|1為1,0|0為0。例如:int a=7,b=-7;printf(%d,a|b); /*輸出-1*/運算過程如下:思考:任意一個數(shù)與0進行|運算,結(jié)果如
13、何?4.11第11級:&邏輯與運算符運算法則:自左向右運算。兩邊同時為真(邏輯值1),表達式的值才為真;左邊為真,繼續(xù)右邊運算;左邊為假(邏輯值0),停止右邊運算。例如:int a=7,b=-7;printf(%dn,a0&b0);/*a0為真,b0為假,故a0&b0的值為0,輸出0*/printf(%dn,a0&b0為真,b0&b0&+b);/*+a得8,大于0成立,+b得-6,不為0,故輸出1*/printf(%dn,-b&+a0&+a);/*b0不成立,不再執(zhí)行后面的+a,a的值不變,故輸出0*/printf(a=%d,b=%d,a,b); /*輸出a=9,b=-7*/4.12第12級:
14、|邏輯或運算符運算法則:自左向右運算。任意一邊為真,表達式的值即可為真;左邊為真,不再運算右邊;左邊為假,繼續(xù)右邊運算。例如:int a=7,b=0;printf(%dn,a0|b0);/*a0為真,表達式的值為真,輸出1*/printf(%dn,a0|b); /*a0為假,繼續(xù)右邊運算;b為0,故表達式的值為0,輸出0*/printf(%dn,a0|+b);/*a0|+a);/*b0為真,不再執(zhí)行右邊,a的值不變,表達式值為1,輸出1*/printf(a=%d,b=%d,a,b);/*輸出a=7,b=1*/例如:int a=3,b=-3,c=0; printf(%dn,a+b|b+c&a+c
15、);/*先&得1,再|(zhì)得1*/printf(%dn,ac|a+b&+c);/*先&得0,再|(zhì)得1*/4.13第13級:?:條件運算符條件運算符是C語言唯一的一個三目運算符,結(jié)合方向自右向左。語法規(guī)則:表達式1?表達式2:表達式3;運算法則:如果表達式1成立(值為真),則執(zhí)行表達式2作為整個表達式的值,否則執(zhí)行表達式3作為整個表達式的值。例如:int a=7,b=3,c,d;c=ab?a+b:a-b; /*ab成立,執(zhí)行a+b,并把運算結(jié)果賦給變量c*/printf(c=%dn,c); /*輸出10*/d=ac?a+b:ca?a-b:c-a; /*這里體現(xiàn)了自右向左的結(jié)合性(運算方向),可書寫為
16、“ac?a+b:(ca?a-b:c-a);” ,ca成立,執(zhí)行a-b,得4,ac不成立,取“:”后面的值4,賦給變量d*/printf(d=%d,d); /*輸出d=4*/4.13第13級:?:條件運算符模塊2.2.1的程序目的是讓我們快速了解C語言的程序結(jié)構(gòu)。該程序用?:條件運算符寫則很簡單。比較輸入的2數(shù)大小:#include int main() int a,b,c;scanf(%d%d,&a,&b);c=ab?a:b;printf(%dn,c);同樣,比較輸入的3個數(shù)大小,也可用三目運算符來實現(xiàn): (ab?a:b)c?(ab?a:b):c; /*看作3個表達式*/“”外,其他也稱復(fù)合運
17、算符(由2個運算符構(gòu)成),運算方向自右至左。1.運算符(1)一定要把它和等于符號=區(qū)分開來。“a=2;”讀法是:把2賦給變量a。 “a=2;”讀法是:a等于2。“a=b+(a=2);”要注意括號里的“a=2”不能加分號,因為它只是語句里的一部分。(2)要特別注意只能給變量賦值,不能給表達式賦值。所謂表達式,就是由運算符構(gòu)成的式子,如a+b。int a_1,b,c;a_1=10;/*給單個變量賦值,正確*/b+c=20;/*不能給表達式賦值,錯誤*/a_1=b+c=30; /*不能給表達式賦值,錯誤*/4.14第14級:=、+=、-=、*=、/=、%=、=、&=、=、|=賦值運算符除2.+=、-
18、=、*=、/=、%=、=、&=、=、|=復(fù)合賦值運算符以+=為例:(1)“a+=b;”等同于“a=a+b;”。(2)“a+=b+c;”等同于“a=a+b+c;”,其他各運算符一樣,以此類推。(3)有多個復(fù)合賦值運算符時要注意變量值的變化。例如:int a=5;a+=a-=12+8;/*自右往左,加號優(yōu)于復(fù)合賦值符,故先算12+8得20;接著a-=20,即a=a-20,結(jié)果為-15,即a=-15;a被重新賦值,再運算a+=-15,即a=a+(-15),結(jié)果為-30,即a=-30; a被重新賦值-30*/4.14第14級:=、+=、-=、*=、/=、%=、=、&=、=、|=賦值運算符除運算方向自左至右。語法規(guī)則:表達式1,表達式2,,表達式n。運算規(guī)則:以最后一個表達式的值作為整個逗號表達式的值。4.15第15級:,逗號運算符4.16程序示例:評比獎學(xué)金學(xué)校獎學(xué)金評比辦法:語、數(shù)、外各科均以100分計,總的條件是語、數(shù)、外各科必須60分(含)以上方可評比。具體等級是:(1)語、數(shù)、外各科均在90分以上(含)或平均分在90分以上(含)為一等獎,輸出:“F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高中語文第二課千言萬語總關(guān)“音”第4節(jié)聲情并茂-押韻和平仄練習(xí)含解析新人教版選修語言文字應(yīng)用
- DB42-T 2352-2024 道路瀝青紅外光譜法快速識別技術(shù)規(guī)程
- 監(jiān)督檢查施工安全防護措施
- 二零二五年度淋浴房行業(yè)技術(shù)交流合作合同3篇
- 創(chuàng)新技術(shù)論壇與法規(guī)分享
- 2024年浙江金融職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年陜西省第二人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年浙江建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 軍用仿真競爭格局分析
- 2024年陸川縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 信號分析與處理-教學(xué)大綱
- 氣藏提高采收率技術(shù)與方法綜述
- 河道整治工程運營維護方案
- 國家醫(yī)療保障疾病診斷相關(guān)分組(CHS-DRG)分組與付費技術(shù)規(guī)范(可編輯)
- 新高考普通高中生物人教版教材目錄
- 喜家德水餃合伙人協(xié)議書
- 中考數(shù)學(xué)計算題100道
- 高壓變頻器整流變壓器
- 質(zhì)量總監(jiān)煉成記
- 學(xué)校突發(fā)安全事件應(yīng)急預(yù)案目錄
- 《新唯識論》儒佛會通思想研究
評論
0/150
提交評論