版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
運(yùn)算符和表達(dá)式第1頁,共73頁,2023年,2月20日,星期日§3.0預(yù)備知識(shí)計(jì)算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換數(shù)碼、基與權(quán)數(shù)碼:表示數(shù)的符號(hào)基:數(shù)碼的個(gè)數(shù)權(quán):每一位所具有的值數(shù)制:二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制各種進(jìn)制之間的轉(zhuǎn)換非十進(jìn)制(二、八、十六進(jìn)制)轉(zhuǎn)換成十進(jìn)制方法:按權(quán)相加十進(jìn)制轉(zhuǎn)換成非十進(jìn)制(二、八、十六進(jìn)制)方法:除基反序取余(整數(shù)部分)第2頁,共73頁,2023年,2月20日,星期日二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成八進(jìn)制:從右向左,每3位一組(不足3位左補(bǔ)0),轉(zhuǎn)換成八進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制:用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù)二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成十六進(jìn)制:從右向左,每4位一組(不足4位左補(bǔ)0),轉(zhuǎn)換成十六進(jìn)制十六進(jìn)制轉(zhuǎn)換成二進(jìn)制:用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù)第3頁,共73頁,2023年,2月20日,星期日字節(jié)和位內(nèi)存以字節(jié)為單元組成每個(gè)字節(jié)有一個(gè)地址一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成每個(gè)二進(jìn)位的值是0或1數(shù)值的表示方法——原碼、反碼和補(bǔ)碼原碼:最高位為符號(hào)位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負(fù)數(shù):符號(hào)位為1,其余位對原碼取反補(bǔ)碼:正數(shù):原碼、反碼、補(bǔ)碼相同負(fù)數(shù):最高位為1,其余位為原碼取反,再對整個(gè)數(shù)加1第4頁,共73頁,2023年,2月20日,星期日原碼反碼補(bǔ)碼數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))第5頁,共73頁,2023年,2月20日,星期日§3.1C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void整型實(shí)型字符型char單精度型float數(shù)組型雙精度型double結(jié)構(gòu)體類型struct共用體類型union枚舉類型enum有符號(hào)無符號(hào)基本整型int短整型short長整型long基本整型unsignedint短整型unsignedshort長整型unsignedlong自定義類型typedef數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作第6頁,共73頁,2023年,2月20日,星期日§3.2常量與變量一、標(biāo)識(shí)符1、定義:可用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。2、命名規(guī)則:
①由字母、數(shù)字、下劃線組成
②以字母或下劃線打頭③區(qū)分大小寫④命名盡量做到“見名知義”⑤TurboC允許標(biāo)識(shí)符最大長度32個(gè)字符,建意不超過8個(gè)字符⑥不允許和關(guān)鍵字相同第7頁,共73頁,2023年,2月20日,星期日二、常量1、常量:在程序運(yùn)行過程中,值不變的量。2、直接常量:即常數(shù)。如1、2、35、‘a(chǎn)’??梢苑譃閷?shí)型、整型、字符型。其特點(diǎn)是從字面上即可判定它們是某一類型的常量。也稱“字面常量”3、符號(hào)常量:在一個(gè)程序中指定用一個(gè)符號(hào)代表一個(gè)常量。符號(hào)常量用#define命令定義。其值不能改變。習(xí)慣上用大寫。如在程序的開頭有如下定義:#definePI3.1415926
則在整個(gè)程序中可用“PI”代替3.1415926進(jìn)行運(yùn)算第8頁,共73頁,2023年,2月20日,星期日例1:符號(hào)常量的應(yīng)用#definePRICE30main(){ intnum,total; num=10; total=num*PRICE; printf("total=%d",total);}第9頁,共73頁,2023年,2月20日,星期日三、變量1、定義:在程序運(yùn)行的過程中,值可以改變的量。2、變量的屬性:變量名:合法標(biāo)識(shí)符。變量值:變量的存儲(chǔ)空間中存放的變量的內(nèi)容。存儲(chǔ)單元:變量定義后,為其分配存儲(chǔ)空間的起始位置。12a變量名(符號(hào)地址)變量值存儲(chǔ)單元(物理地址)第10頁,共73頁,2023年,2月20日,星期日3、變量的使用:先定義,后使用。原因:1、編譯程序不能翻譯未定義變量。2、編譯程序在編譯時(shí)根據(jù)變量類型確定存儲(chǔ)單元的數(shù)量。3、編譯程序在編譯時(shí)根據(jù)變量類型進(jìn)行語法檢查。例:整型變量a、b可以進(jìn)行“求余”運(yùn)算a%b若把a(bǔ)、b定義為實(shí)數(shù),則上述運(yùn)算非法。第11頁,共73頁,2023年,2月20日,星期日一、整型常量:有三種表示形式1、十進(jìn)數(shù)形式:1、98、3452、八進(jìn)數(shù)形式:以0開頭的數(shù)字。01、0763、十六進(jìn)數(shù)形式:以0x開頭的數(shù)字。0x3F、0x765§3.3整型數(shù)據(jù)第12頁,共73頁,2023年,2月20日,星期日二、整型變量:(有符號(hào)和無符號(hào))類型有符號(hào)無符號(hào)基本型(簡稱整型)intunsignedint
短整型short或shortintunsignedshort
長整型long或longintunsignedlong說明:無符號(hào)型加unsigned修飾符表示,只表示正數(shù),無符號(hào)位。各類型數(shù)據(jù)所占寬度和范圍見書43頁表3.1第13頁,共73頁,2023年,2月20日,星期日三、整型變量的定義1、變量的定義一般在函數(shù)的開頭部分;也可以在其它位置,但定義的位置影響變量的作用范圍。2、一條定義語句可定義多個(gè)同種類型的變量,各變量之間用逗號(hào)分隔。
3、變量類型符與其后所定義變量之間用空格分隔。
如:
inta;unsignedshortb,c;longd;第14頁,共73頁,2023年,2月20日,星期日四、整型常量的類型整型常量賦值給整型變量時(shí)的注意事項(xiàng):1、如果一個(gè)整型常量在-32768~32767之間,可以賦給int型和變量longint型變量。2、如果一個(gè)整型常量在-231~231-1之間,可以賦給longint型變量3、常量中沒有無符號(hào)型,但非負(fù)常量可以賦給無符號(hào)變量4、在一個(gè)整型常量后加一個(gè)字母l或L,則編譯器把該整型常量作為long類型處理。如:123L、0L
第15頁,共73頁,2023年,2月20日,星期日一、實(shí)型常量:實(shí)數(shù)又稱為浮點(diǎn)數(shù),有兩種表示形式1、十進(jìn)制數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))
如:43.2、89.、.862、指數(shù)形式:即科學(xué)計(jì)數(shù)法。如:45e2相當(dāng)于45×102、34e5相當(dāng)于34×105。字母e前必須有數(shù)字,字母e后必須是整數(shù)?!耙?guī)范化指數(shù)形式”:在指數(shù)形式中,小數(shù)部分中的小數(shù)點(diǎn)前有且只有一位非零數(shù)字。§3.4實(shí)型數(shù)據(jù)第16頁,共73頁,2023年,2月20日,星期日二、實(shí)型變量(分為三種類型)1、單精度型(float):一般占4個(gè)字節(jié),有效數(shù)位為7位2、雙精度型(double):一般占8個(gè)字節(jié),有效數(shù)位為15位3、長雙精度型(longdouble):一般占16個(gè)字節(jié),有效數(shù)位為18位實(shí)型常量不分單、雙精度??扇我赓x值,但有效數(shù)位不同。三、實(shí)型數(shù)據(jù)的舍入誤差第17頁,共73頁,2023年,2月20日,星期日§3.5字符型數(shù)據(jù)一、字符型常量:用一對單引號(hào)括起來的一個(gè)字符。說明:.單引號(hào)不是字符常量的一部分,只是一種界定符。.單引號(hào)內(nèi)不能是單撇號(hào)或反斜杠。二、字符常量的分類:1、普通字符:如:‘1’、‘a(chǎn)’、‘A’、‘*’2、轉(zhuǎn)義字符:也稱控制字符。說明:.用反斜杠開頭后面跟一個(gè)字母代表一個(gè)控制字符。.\\代表字符反斜杠;\‘代表撇號(hào)字符.反斜杠后面的字符失去原來的含義第18頁,共73頁,2023年,2月20日,星期日字符形式功能\n回車換行符\t橫向跳格:跳到下一個(gè)輸出區(qū)(每一輸出區(qū)為8個(gè)字符位置)\b退格\r回車不換行(回到本行起始字符位置)\f走紙換頁\\反斜杠字符\\'單引號(hào)(撇號(hào))'\ddd1~3位八進(jìn)制數(shù)所代表的字符。如\101表示'A'\xhh1~2位十六進(jìn)制數(shù)所代表的字符。如\x40表示'A'常用轉(zhuǎn)義字符形式及功能第19頁,共73頁,2023年,2月20日,星期日二、字符變量:用來存放字符常量。
說明:.一個(gè)字符變量占一個(gè)字節(jié).一個(gè)字符變量只能存放一個(gè)字符.字符變量的定義用char三、字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法1、字符常量與整型常量存儲(chǔ)時(shí)都以ASCII碼形式存放2、字符常量可以以整型常量形式輸出,反之亦可3、字符常量可以賦值給整型變量,反之亦可第20頁,共73頁,2023年,2月20日,星期日例2:
main(){charc1,c2;/*定義兩個(gè)字符型變量*/
c1=97;c2=98;/*分別給兩個(gè)變量賦整型常量的值*/
printf(“%c%c”,c1,c2);/*以字符格式輸出兩個(gè)字符型數(shù)據(jù)*/}輸出:
ab第21頁,共73頁,2023年,2月20日,星期日例3:main(){charc1,c2;/*定義兩個(gè)字符型變量*/c1=‘a(chǎn)’;c2=‘b’;/*賦字符型常量*/c1=c1-32;c2=c2-32;/*分別減去32*/
printf(“%c%c”,c1,c2);/*輸出兩個(gè)字符型數(shù)據(jù)*/}輸出:AB第22頁,共73頁,2023年,2月20日,星期日四、字符串常量:1、概念:由一對雙撇號(hào)括起來的零個(gè)或多個(gè)字符序列
如:“hello”、“programming”、“A”等。2、說明:?雙撇號(hào)是界定符,不屬于字符串內(nèi)容?“”表示一個(gè)空字符串,在內(nèi)存中占一個(gè)字節(jié)?“”表示一個(gè)空格字符串,在內(nèi)存中占2個(gè)字節(jié)?“A”表示一個(gè)字符串,‘A’表示一個(gè)字符第23頁,共73頁,2023年,2月20日,星期日3、字符串常量與字符常量的區(qū)別:?一個(gè)字符常量可以賦值給一個(gè)字符變量,而字符串不可以?二者界定符不同?二者的存儲(chǔ)方式不同:存儲(chǔ)字符串時(shí),在其末尾加一個(gè)‘\0‘作為結(jié)束標(biāo)志,但不輸出。即存儲(chǔ)字符串時(shí),比字符串中所有字符個(gè)數(shù)加起來多一個(gè)。?“\0”的含義是“空操作”,不產(chǎn)生任何作用,只起標(biāo)志作用?無字符串變量,但可用字符型數(shù)組進(jìn)行存儲(chǔ)第24頁,共73頁,2023年,2月20日,星期日一、賦值:向變量所代表的存儲(chǔ)單元傳送數(shù)據(jù)的操作,用“=”表示二、賦值的一般形式:變量=表達(dá)式;三、可以先定義變量,后賦值;也可以在定義變量時(shí)直接賦值四、對幾個(gè)變量同時(shí)賦值:1、inta,b,c=5;2、inta=3,b=3,c=3;3、inta;a=3;4、inta,b,c;c=5;§3.6變量賦初值第25頁,共73頁,2023年,2月20日,星期日§3.7各類型數(shù)值數(shù)據(jù)間的混合運(yùn)算一、轉(zhuǎn)換原因:不同類型之間進(jìn)行運(yùn)算,必須先轉(zhuǎn)換為同一類型二、轉(zhuǎn)換的類型:實(shí)型、整型、字符型三、轉(zhuǎn)換規(guī)則:doublefloatlongunsignedintchar,short1、按“向高看齊”的原則,將“較低”的類型進(jìn)行提升2、所有char或short型全部自動(dòng)轉(zhuǎn)換為int型3、所有float型轉(zhuǎn)換成double型圖形注解:縱向箭頭表示轉(zhuǎn)換方向
橫向箭頭表示必然轉(zhuǎn)換第26頁,共73頁,2023年,2月20日,星期日注意:箭頭方向只表示數(shù)據(jù)類型由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最后轉(zhuǎn)換成double型。第27頁,共73頁,2023年,2月20日,星期日§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式(一)按功能劃分:1、算術(shù)運(yùn)算符:+、-、*、/、%2、關(guān)系運(yùn)算符:>、<、==、>=、<=、!=3、邏輯運(yùn)算符:!、&&、||4、位運(yùn)算符:<<、>>、~、^、|、&5、賦值運(yùn)算符:=、+=、-=、*=、/=6、條件運(yùn)算符:?,:7、逗號(hào)運(yùn)算符:,8、指針運(yùn)算符:*、&9、求字節(jié)數(shù)運(yùn)算符:sizeof10、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型名)11、分量運(yùn)算符:·12、下標(biāo)運(yùn)算符:[]13、其它:函數(shù)運(yùn)算符一、C運(yùn)算符分類第28頁,共73頁,2023年,2月20日,星期日(二)按所需操作數(shù)個(gè)數(shù)劃分1、單目運(yùn)算符
2、雙目運(yùn)算符
3、三目運(yùn)算符第29頁,共73頁,2023年,2月20日,星期日二、算術(shù)運(yùn)算符和算術(shù)表達(dá)式1、基本的算術(shù)運(yùn)算符:+、-、*、/、%(1)關(guān)于除法運(yùn)算符/C語言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。-5/3=-1(余-2),TurboC取結(jié)果用“向零取整”的方法;(2)關(guān)于求余數(shù)運(yùn)算%要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯(cuò)。第30頁,共73頁,2023年,2月20日,星期日2.表達(dá)式和算術(shù)表達(dá)式(1)表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對象(常量、變量和函數(shù)等)連接起來的、符合C語言語法規(guī)則的式子,稱為表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱為簡單表達(dá)式,其它表達(dá)式稱之為復(fù)雜表達(dá)式。(2)算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)表達(dá)式。良好的源程序書寫習(xí)慣:在表達(dá)式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程序的可讀性。請比較表達(dá)式“(x+y)/2–1”與“(x+y)/2–1”,您認(rèn)為哪個(gè)的可讀性更好一些?第31頁,共73頁,2023年,2月20日,星期日3.運(yùn)算符的優(yōu)先級與結(jié)合性(1)C語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。
自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。第32頁,共73頁,2023年,2月20日,星期日(2)表達(dá)式求值1)按運(yùn)算符的優(yōu)先級高低次序執(zhí)行。例如,先乘除后加減。2)如果在一個(gè)運(yùn)算對象(或稱操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級相同,則按C語言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如:算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然后再執(zhí)行加c的運(yùn)算。第33頁,共73頁,2023年,2月20日,星期日4、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換的規(guī)則:(1)一般形式:(類型名)(表達(dá)式)如:(int)a;(float)(x+y);(double)(4%3);(2)注意:表達(dá)式應(yīng)用括號(hào)括起來。強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,原來變量的類型不發(fā)生變化。第34頁,共73頁,2023年,2月20日,星期日例:(int)x+y:將x轉(zhuǎn)換成整型數(shù)據(jù)后與y相加(int)(x+y):將x+y的值轉(zhuǎn)換成整型區(qū)別:(int)x與int(x)、(int)(x)例:已知x為一個(gè)實(shí)型變量,經(jīng)過強(qiáng)制類型轉(zhuǎn)換(int)x后,x的數(shù)據(jù)類型是怎樣的。
進(jìn)行強(qiáng)制類型轉(zhuǎn)換,只是生成一個(gè)int型的中間變量,而x原來的類型并沒改變。所以x仍是實(shí)型數(shù)據(jù);第35頁,共73頁,2023年,2月20日,星期日例4:
main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}運(yùn)行結(jié)果如下:x=3.600000,i=3第36頁,共73頁,2023年,2月20日,星期日5、自增(++)、自減(--)運(yùn)算
1)作用
自增運(yùn)算使單個(gè)變量的值增1,自減運(yùn)算使單個(gè)變量的值減1。
2)用法與運(yùn)算規(guī)則
自增、自減運(yùn)算符都有兩種用法:
(1)前置運(yùn)算──運(yùn)算符放在變量之前:++變量、--變量
先使變量的值增(或減)1,然后再以變化后的值參與其它運(yùn)算,即先增減、后運(yùn)算。
(2)后置運(yùn)算──運(yùn)算符放在變量之后:變量++、變量--
變量先參與其它運(yùn)算,然后再使變量的值增(或減)1,即先運(yùn)算、后增減。第37頁,共73頁,2023年,2月20日,星期日[例5]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。/*程序功能:自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例*/main(){intx=6,y;printf("x=%d\n",x); /*輸出x的初值*/
y=++x; /*前置運(yùn)算*/
printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置運(yùn)算*/
printf("y=x--:x=%d,y=%d\n",x,y);}程序運(yùn)行結(jié)果:x=6y=++x:x=7,y=7y=x--:x=6,y=7 第38頁,共73頁,2023年,2月20日,星期日3.說明(1)自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。第39頁,共73頁,2023年,2月20日,星期日(3)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。如:i=3;k=(i++)+(i++)+(i++)k值等于9。
k=(++i)+(++i)+(++i)k值等于18。(4)出現(xiàn)多個(gè)運(yùn)算符時(shí),編譯器在處理時(shí)盡可能多的(從左到右)將若干個(gè)字符組合成一個(gè)運(yùn)算符。
如:i+++j;(i++)+ji+(++j)(5)TurboC中,調(diào)用函數(shù)時(shí),實(shí)際參數(shù)的處理順序是從右到左。
如:i=3;printf("%d,%d",i,i++);輸出結(jié)果:4,3第40頁,共73頁,2023年,2月20日,星期日6、正、負(fù)號(hào)運(yùn)算符1)一元運(yùn)算符;2)結(jié)合方向是自右向左的3)優(yōu)先級和自增、自減相同,高于*、/運(yùn)算符4)相當(dāng)于一次算術(shù)運(yùn)算例:-a*b=(-a)*b-a=0-a第41頁,共73頁,2023年,2月20日,星期日§3.9賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符:=
作用:將一個(gè)表達(dá)式的值賦給變量。
賦值運(yùn)算符的一般形式為:變量=賦值表達(dá)式
例如:x=5
y=(float)5/2
如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時(shí),系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。
思考:假設(shè)變量num的數(shù)據(jù)類型為float,其值為2.5,則執(zhí)行“num=(int)num”后,num的值等于多少?第42頁,共73頁,2023年,2月20日,星期日左(變量)右(表達(dá)式)結(jié)果intfloat、double舍棄小數(shù)(截?cái)啵?/p>
float、double
int
值不變
int(2字節(jié))
unsignedchar賦給int的低8位,
高8位補(bǔ)0
signedchar賦給int的低8位,高8位補(bǔ)符號(hào)charint、short、long取低8位longint
int符號(hào)擴(kuò)展intlongint截?cái)啵ㄈ〉?6位)longint
unsignedint
高位補(bǔ)0二、賦值時(shí)的類型轉(zhuǎn)換當(dāng)賦值運(yùn)算符兩側(cè)的類型不同時(shí),在賦值前要進(jìn)行類型轉(zhuǎn)換。轉(zhuǎn)換規(guī)則如下表:第43頁,共73頁,2023年,2月20日,星期日三、復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。復(fù)合賦值運(yùn)算的一般格式為:
變量雙目運(yùn)算符=表達(dá)式
└──┬──┘
復(fù)合賦值運(yùn)算符它等價(jià)于:變量=變量雙目運(yùn)算符(表達(dá)式)。當(dāng)表達(dá)式為簡單表達(dá)式時(shí),表達(dá)式外的一對圓括號(hào)才可缺省,否則可能出錯(cuò)。第44頁,共73頁,2023年,2月20日,星期日例如:x+=3 /*等價(jià)于x=x+3*/y*=x+6 /*等價(jià)于y=y*(x+6),而不是y=y*x+6*/C語言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:+=,-=,*=,/=,%=; /*復(fù)合算術(shù)運(yùn)算符(5個(gè))*/&=,^=,|=,<<=,>>=; /*復(fù)合位運(yùn)算符(5個(gè))*/第45頁,共73頁,2023年,2月20日,星期日四、賦值表達(dá)式一般形式:<變量><賦值運(yùn)算符><表達(dá)式>例:
賦值表達(dá)式:
a=5
賦值語句:
a=5;
賦值表達(dá)式中的“表達(dá)式”也可以是賦值表達(dá)式。請計(jì)算下列表達(dá)式中各變量的值:(1)a=(b=5)(2)a=b=5(3)a=5+(c=6)(4)a=(b=4)+(c=6)(5)a=(b=10)/(c=2)(6)a+=a-=a*a(設(shè)a=5)第46頁,共73頁,2023年,2月20日,星期日§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式一、一般形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n二、求解過程:按順序求解。三、表達(dá)式的值:最后一個(gè)表達(dá)式的值四、優(yōu)先級:最低五、不是所有的逗號(hào)都是逗號(hào)運(yùn)算符第47頁,共73頁,2023年,2月20日,星期日例:(1)a=5+4,6*a(2)(a=5+4,6*a),a-2(3)b=(a=4,a*5)(4)b=a=4,5*a答案:(1)a=9,54(2)a=9,7(3)a=4,b=20(4)a=4,b=4,20第48頁,共73頁,2023年,2月20日,星期日區(qū)別1:(逗號(hào)運(yùn)算符在所有運(yùn)算符中優(yōu)先級最低)
x=(a=3,6*3)/*賦值表達(dá)式*/
x=a=3,6*a/*逗號(hào)表達(dá)式*/區(qū)別2:(逗號(hào)可以作運(yùn)算符,也可以作分隔符)
printf("%d,%d,%d",a,b,c);/*逗號(hào)做分隔符*/
printf("%d,%d,%d",(a,b,c),b,c);/*(a,b,c)中的逗號(hào)是運(yùn)算符,其余逗號(hào)是分隔符*/
第49頁,共73頁,2023年,2月20日,星期日課后作業(yè)(P66):必做題:2、3、5、6、8、9、10、12選做題:4、11第50頁,共73頁,2023年,2月20日,星期日§5.1關(guān)系運(yùn)算符及其表達(dá)式
關(guān)系運(yùn)算:比較運(yùn)算,用“關(guān)系表達(dá)式”進(jìn)行運(yùn)算。它取兩個(gè)值:"真"(true)和"假"(false)。一、關(guān)系運(yùn)算符及其優(yōu)先次序1.C語言有六種關(guān)系運(yùn)算符:<小于優(yōu)先級相同(高)<=小于或等于>大于>=大于或等于==等于!=不等于
(低)注意:在C語言中,“等于”關(guān)系運(yùn)算符是雙等號(hào)“==”,而不是單等號(hào)“=”(賦值運(yùn)算符)。第51頁,共73頁,2023年,2月20日,星期日2.優(yōu)先級(1)在關(guān)系運(yùn)算符中,前4個(gè)優(yōu)先級相同,后2個(gè)也相同,且前4個(gè)高于后2個(gè)。(2)與其它種類運(yùn)算符的優(yōu)先級關(guān)系關(guān)系運(yùn)算符的優(yōu)先級,低于算術(shù)運(yùn)算符,但高于賦值運(yùn)算符。第52頁,共73頁,2023年,2月20日,星期日二、關(guān)系表達(dá)式1.關(guān)系表達(dá)式的概念所謂關(guān)系表達(dá)式是指,用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來,進(jìn)行關(guān)系運(yùn)算的式子。例如,下面的關(guān)系表達(dá)式都是合法的:
a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)==(b>c)2.關(guān)系表達(dá)式的值——邏輯值(非“真”即“假”)。由于C語言沒有邏輯型數(shù)據(jù),所以用整數(shù)“1”表示“邏輯真”,用整數(shù)“0”表示“邏輯假”。第53頁,共73頁,2023年,2月20日,星期日例如,假設(shè)num1=3,num2=4,num3=5,則:(1)num1>num2的值=0。(2)(num1>num2)!=num3的值=1。(3)num1<num2<num3的值=1。
思考:任意改變num1或num2的值,會(huì)影響整個(gè)表達(dá)式的值嗎?為什么?(4)(num1<num2)+num3的值=6,因?yàn)閚um1<num2的值=1,1+5=6。
再次強(qiáng)調(diào):C語言用整數(shù)“1”表示“邏輯真”,用整數(shù)“0”表示“邏輯假”。所以,關(guān)系表達(dá)式的值,還可以參與其它種類的運(yùn)算,例如算術(shù)運(yùn)算、邏輯運(yùn)算等。第54頁,共73頁,2023年,2月20日,星期日§5.2邏輯運(yùn)算及其表達(dá)式
關(guān)系表達(dá)式只能描述單一條件,例如“x>=0”。如果需要描述“x>=0”、同時(shí)“x<10”,就要借助于邏輯表達(dá)式了。
一、邏輯運(yùn)算符及其優(yōu)先次序1.邏輯運(yùn)算符及其運(yùn)算規(guī)則(1)C語言提供三種邏輯運(yùn)算符:&& 邏輯與(相當(dāng)于“同時(shí)”)|| 邏輯或(相當(dāng)于“或者”)! 邏輯非(相當(dāng)于“否定”)第55頁,共73頁,2023年,2月20日,星期日例如,下面的表達(dá)式都是邏輯表達(dá)式:
(x>=0)&&(x<10)、(x<1)||(x>5)、!(x==0)、 (year%4==0)&&(year%100!=0)||(year%400==0)(2)運(yùn)算規(guī)則1)&&:當(dāng)且僅當(dāng)兩個(gè)運(yùn)算量的值都為“真”時(shí),運(yùn)算結(jié)果為“真”,否則為“假”。2)||:當(dāng)且僅當(dāng)兩個(gè)運(yùn)算量的值都為“假”時(shí),運(yùn)算結(jié)果為“假”,否則為“真”。3)!:當(dāng)運(yùn)算量的值為“真”時(shí),運(yùn)算結(jié)果為“假”;當(dāng)運(yùn)算量的值為“假”時(shí),運(yùn)算結(jié)果為“真”。例如,假定x=5,則(x>=0)&&(x<10)的值為“真”,(x<-1)||(x>5)的值為“假”。第56頁,共73頁,2023年,2月20日,星期日2.邏輯運(yùn)算符的運(yùn)算優(yōu)先級(1)邏輯非的優(yōu)先級最高,邏輯與次之,邏輯或最低,即:!(非)→&&(與)→||(或)(2)與其它種類運(yùn)算符的優(yōu)先關(guān)系!→算術(shù)運(yùn)算→關(guān)系運(yùn)算→&&→||→賦值運(yùn)算第57頁,共73頁,2023年,2月20日,星期日二、邏輯表達(dá)式1.邏輯表達(dá)式的概念所謂邏輯表達(dá)式是指,用邏輯運(yùn)算符將1個(gè)或多個(gè)表達(dá)式連接起來,進(jìn)行邏輯運(yùn)算的式子。在C語言中,用邏輯表達(dá)式表示多個(gè)條件的組合。例如,(year%4==0)&&(year%100!=0)||(year%400==0)就是一個(gè)判斷一個(gè)年份是否是閏年的邏輯表達(dá)式。
邏輯表達(dá)式的值也是一個(gè)邏輯值(非“真”即“假”)。第58頁,共73頁,2023年,2月20日,星期日2.邏輯量的真假判定──0和非0C語言用整數(shù)“1”表示“邏輯真”、用“0”表示“邏輯假”。但在判斷一個(gè)數(shù)據(jù)的“真”或“假”時(shí),卻以0和非0為根據(jù):如果為0,則判定為“邏輯假”;如果為非0,則判定為“邏輯真”。例如,假設(shè)num=12,則:!num的值=0,num>=1&&num<=31的值=1,num||num>31的值=1。第59頁,共73頁,2023年,2月20日,星期日3.說明(1)邏輯運(yùn)算符兩側(cè)的操作數(shù),除可以是0和非0的整數(shù)外,也可以是其它任何類型的數(shù)據(jù),如實(shí)型、字符型等。(2)在計(jì)算邏輯表達(dá)式時(shí),只有在必須執(zhí)行下一個(gè)表達(dá)式才能求解時(shí),才求解該表達(dá)式(即并不是所有的表達(dá)式都被求解)。換句話說:1)對于邏輯與運(yùn)算,如果第一個(gè)操作數(shù)被判定為“假”,系統(tǒng)不再判定或求解第二操作數(shù)。2)對于邏輯或運(yùn)算,如果第一個(gè)操作數(shù)被判定為“真”,系統(tǒng)不再判定或求解第二操作數(shù)。例如:假設(shè)n1、n2、n3、n4、x、y的值分別為1、2、3、4、1、1,則求解表達(dá)式“(x=n1>n2)&&(y=n3>n4)”后,x的值變?yōu)椋?,而y的值不變,仍等于1。第60頁,共73頁,2023年,2月20日,星期日課后作業(yè)(P111):
2、3第61頁,共73頁,2023年,2月20日,星期日§12.1位運(yùn)算符及位運(yùn)算1.按位與──&
(1)格式:x&y
(2)規(guī)則:對應(yīng)位均為1時(shí)才為1,否則為0。例如,3&9=1:0011&1001 0001=(1)10
(3)主要用途:①清零。如5&0=0②取(或保留)一個(gè)數(shù)的某(些)指定位。構(gòu)造一個(gè)數(shù)與之按位與,將要取的位置1,其余位置0。第62頁,共73頁,2023年,2月20日,星期日2.按位或──|
(1)格式:x|y
(2)規(guī)則:對應(yīng)位均為0時(shí)才為0,否則為1。例如,3|9=11:0011 |10011011=(11)10
(3)主要用途:
將一個(gè)數(shù)的某(些)位置1,其余各位不變。構(gòu)造一個(gè)數(shù)與之按位或,將要置1的位置1,其余位置0。第63頁,共73頁,2023年,2月20日,星期日3.按位異或──^(1)格式:x^y(2)規(guī)則:對應(yīng)位相同時(shí)為0,不同時(shí)為1:如:3^9=10。(3)主要用途:①使1個(gè)數(shù)的某(些)位翻轉(zhuǎn)(即原來為1的位變?yōu)?,為0的變?yōu)?),其余各位不變??蓸?gòu)造一個(gè)數(shù)與之按位異或,將要翻轉(zhuǎn)的位置1,不翻轉(zhuǎn)的位為0。②與0相異或,保留原值。③交換兩個(gè)數(shù)的值,不用臨時(shí)變量。如:
a=a^b;b=b^a;a=a^b;第64頁,共73頁,2023年,2月20日,星期日4.按位取反(單目運(yùn)算符)──~(1)格式:~x(2)規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1(3)主要用途:間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。如:要構(gòu)造一個(gè)全1的數(shù),可用~0表示。第65頁,共73頁,2023年,2月20日,星期日5.按位左移──<<(1)格式:x<<位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補(bǔ)0,高位溢出。如:5<<2=20。(3)結(jié)論:
某數(shù)左移1位相當(dāng)于該數(shù)乘以2,左移n位相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GBT 31424-2015 煤灰黏度測定方法》專題研究報(bào)告
- 某著名企業(yè)發(fā)展戰(zhàn)略
- 《GBT 17999.4-2008 SPF雞 微生物學(xué)監(jiān)測 第4部分:SPF雞 血清平板凝集試驗(yàn)》專題研究報(bào)告
- 《GBT 21929-2008泰格閉口杯閃點(diǎn)測定法》專題研究報(bào)告
- 道路安全培訓(xùn)體會(huì)心得課件
- 2026年海南省??谑休o警考試題庫含答案
- 2026年廣西壯族自治區(qū)賀州市輔警考試試卷及答案
- 道口工人身安全培訓(xùn)課件
- 2024版多協(xié)會(huì)非心臟手術(shù)圍手術(shù)期心血管管理指南解讀課件
- 返崗復(fù)工安全培訓(xùn)要求課件
- 兒科??平ㄔO(shè)與發(fā)展規(guī)劃指南
- 煤礦基本知識(shí)培訓(xùn)課件
- GB/T 9754-2025色漆和清漆20°、60°和85°光澤的測定
- 運(yùn)輸合同轉(zhuǎn)包協(xié)議書范本
- 碳排放監(jiān)測與控制技術(shù)-洞察闡釋
- 回顧性研究設(shè)計(jì)及寫作要點(diǎn)
- 中藥儲(chǔ)存養(yǎng)護(hù)管理制度
- T/CECS 10128-2021不銹鋼二次供水水箱
- 2025屆山東省臨沂市高三二模生物試題(解析版)
- 專利侵權(quán)訴訟合同范例
- 銀行審計(jì)試題解析及答案
評論
0/150
提交評論