




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章第二章第二章第二章第二章第二章 數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)類型和表達(dá)式2.1 詞法構(gòu)成詞法構(gòu)成2.2 數(shù)據(jù)類型數(shù)據(jù)類型2.3 常量與變量常量與變量2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式2.1 詞法構(gòu)成詞法構(gòu)成l字符集字符集l標(biāo)識(shí)符標(biāo)識(shí)符l關(guān)鍵字關(guān)鍵字l注釋符注釋符C語(yǔ)言的字符集是語(yǔ)言的字符集是ASCII字符集的一個(gè)子集,由字字符集的一個(gè)子集,由字母,數(shù)字,標(biāo)點(diǎn)符號(hào)和特殊字符構(gòu)成。母,數(shù)字,標(biāo)點(diǎn)符號(hào)和特殊字符構(gòu)成。(1)英文字母:)英文字母:az,AZ(2)數(shù)字:)數(shù)字:09(3)空白符:空格符,制表符,換行符等統(tǒng)稱為)空白符:空格符
2、,制表符,換行符等統(tǒng)稱為空白符??瞻追#?)特殊字符:)特殊字符: 標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào) 轉(zhuǎn)義字符轉(zhuǎn)義字符表表2. .1 常用轉(zhuǎn)義字符表常用轉(zhuǎn)義字符表名稱符號(hào)名稱符號(hào)空字符(null)0換行(newline)n換頁(yè)(formfeed)f回車(chē)(carriage return)r退格(backspace)b響鈴(bell)a水平制表(horizontal tab)t垂直制表(vertical tab)v反斜線(backslash)問(wèn)號(hào)(question mark)?單引號(hào)(single quotation marks)雙引號(hào)(double quotation marks)”1到3位8進(jìn)制數(shù)所代表的字
3、符ddd1到2位16進(jìn)制數(shù)所代表的字符xhhlC語(yǔ)言規(guī)定,標(biāo)識(shí)符只能是語(yǔ)言規(guī)定,標(biāo)識(shí)符只能是字母字母(AZ,az)、數(shù)數(shù)字字(09)、下劃線下劃線( _ )組成的字符串,并且組成的字符串,并且第一個(gè)第一個(gè)字符必須是字母或下劃線字符必須是字母或下劃線。注意注意l(1)C語(yǔ)言中標(biāo)識(shí)符語(yǔ)言中標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)嚴(yán)格區(qū)分大小寫(xiě)(2)ANSI C標(biāo)準(zhǔn)規(guī)定標(biāo)識(shí)符的長(zhǎng)度可達(dá)標(biāo)準(zhǔn)規(guī)定標(biāo)識(shí)符的長(zhǎng)度可達(dá)31個(gè)個(gè)字字符符(3)標(biāo)識(shí)符命名應(yīng))標(biāo)識(shí)符命名應(yīng)“見(jiàn)名知義見(jiàn)名知義”;(4)變量名都要)變量名都要“先定義,后使用先定義,后使用”。lANSI C定義的關(guān)鍵字共定義的關(guān)鍵字共32個(gè),根據(jù)關(guān)鍵字的作個(gè),根據(jù)關(guān)鍵字的作
4、用,可將其分為用,可將其分為數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字、關(guān)鍵字、控制語(yǔ)句控制語(yǔ)句關(guān)關(guān)鍵字、鍵字、存儲(chǔ)類型存儲(chǔ)類型關(guān)鍵字和關(guān)鍵字和其它其它關(guān)鍵字四類關(guān)鍵字四類l Microsoft C在在ANSI C基礎(chǔ)上擴(kuò)展的關(guān)鍵字有基礎(chǔ)上擴(kuò)展的關(guān)鍵字有(19個(gè))個(gè))lC語(yǔ)言的注釋符是以語(yǔ)言的注釋符是以 “/*”開(kāi)頭,并以開(kāi)頭,并以 “*/”結(jié)結(jié)尾,其間的內(nèi)容為注釋,一般出現(xiàn)在程序語(yǔ)句尾,其間的內(nèi)容為注釋,一般出現(xiàn)在程序語(yǔ)句行之后,用來(lái)幫助閱讀程序。行之后,用來(lái)幫助閱讀程序。數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型( )空類型空類型(void)字符型字符型(char)枚舉類型枚舉類型(en
5、um)數(shù)組類型數(shù)組類型( )結(jié)構(gòu)體類型結(jié)構(gòu)體類型(struct)共用體類型共用體類型(union)整型整型實(shí)型實(shí)型單精度型單精度型(float)雙精度型雙精度型(double)基本整型基本整型長(zhǎng)整型長(zhǎng)整型短整型短整型無(wú)符號(hào)整型無(wú)符號(hào)整型整型數(shù)就是通常使用的整數(shù),分為帶符號(hào)整數(shù)和整型數(shù)就是通常使用的整數(shù),分為帶符號(hào)整數(shù)和無(wú)符號(hào)整數(shù)兩大類。無(wú)符號(hào)整數(shù)兩大類。1. 基本類型定義基本類型定義類型說(shuō)明符:類型說(shuō)明符:int例如,例如,int a,b,c;說(shuō)明變量說(shuō)明變量a,b,c被同時(shí)定義為基本整型數(shù)據(jù)類型。被同時(shí)定義為基本整型數(shù)據(jù)類型。2. 整型數(shù)據(jù)的存儲(chǔ)與取值范圍整型數(shù)據(jù)的存儲(chǔ)與取值范圍表表2.2
6、2 Visual C+ 6.0 環(huán)境中整型數(shù)據(jù)屬性表環(huán)境中整型數(shù)據(jù)屬性表數(shù)據(jù)類型占用字節(jié)數(shù)二進(jìn)制位長(zhǎng)度值域int432-21474836482147483647short int216-3276832767long int432-21474836482147483647signed int216signed short int216signed long int432unsigned int216065535unsigned short int216同unsigned intunsigned long int432042949672953. 整型數(shù)據(jù)的表示形式整型數(shù)據(jù)的表示形式l十進(jìn)制整數(shù)十進(jìn)
7、制整數(shù):254,-127,0都是正確的,而都是正確的,而0291(不能有前導(dǎo)不能有前導(dǎo)0)、23D (含有非十進(jìn)制數(shù)碼含有非十進(jìn)制數(shù)碼)都都是非法的;是非法的;l八進(jìn)制整數(shù)八進(jìn)制整數(shù):021,-017都是正確的,它們分別都是正確的,它們分別代表十進(jìn)制整數(shù)代表十進(jìn)制整數(shù)17,-15,而,而256(無(wú)前綴無(wú)前綴0)、03A2(包含了非八進(jìn)制數(shù)碼包含了非八進(jìn)制數(shù)碼)是非法的;是非法的;l十六進(jìn)制整數(shù)十六進(jìn)制整數(shù):0 x12,0 x1F都是正確的,它們都是正確的,它們分別代表十進(jìn)制整數(shù)分別代表十進(jìn)制整數(shù)18,31, 而而5A (無(wú)前綴無(wú)前綴0 x)、0 x3H (含有非十六進(jìn)制數(shù)碼含有非十六進(jìn)制數(shù)碼)
8、是非法的。是非法的。 1. 基本類型定義基本類型定義 類型說(shuō)明符類型說(shuō)明符:float(單精度型),(單精度型),double(雙精(雙精度型),度型),long double(長(zhǎng)雙精度型)(長(zhǎng)雙精度型)2. 實(shí)數(shù)存儲(chǔ)與取值范圍實(shí)數(shù)存儲(chǔ)與取值范圍在計(jì)算機(jī)中,實(shí)數(shù)是以浮點(diǎn)數(shù)形式存儲(chǔ)的,所以在計(jì)算機(jī)中,實(shí)數(shù)是以浮點(diǎn)數(shù)形式存儲(chǔ)的,所以通常將單精度實(shí)數(shù)稱為浮點(diǎn)數(shù)。例如單精度實(shí)型通常將單精度實(shí)數(shù)稱為浮點(diǎn)數(shù)。例如單精度實(shí)型數(shù)據(jù)在計(jì)算機(jī)中的存放形式見(jiàn)圖數(shù)據(jù)在計(jì)算機(jī)中的存放形式見(jiàn)圖2.1所示。其中,所示。其中,小數(shù)部分一般都采用規(guī)格化的數(shù)據(jù)形式。小數(shù)部分一般都采用規(guī)格化的數(shù)據(jù)形式。圖圖2.1單精度實(shí)型數(shù)據(jù)在計(jì)
9、算機(jī)中的存放形式單精度實(shí)型數(shù)據(jù)在計(jì)算機(jī)中的存放形式3. 浮點(diǎn)數(shù)的表示形式浮點(diǎn)數(shù)的表示形式在在C語(yǔ)言中,實(shí)數(shù)表示只采用十進(jìn)制。它有二種語(yǔ)言中,實(shí)數(shù)表示只采用十進(jìn)制。它有二種形式:形式: 十進(jìn)制數(shù)形式和指數(shù)形式。十進(jìn)制數(shù)形式和指數(shù)形式。(1)十進(jìn)制數(shù)形式十進(jìn)制數(shù)形式。由整數(shù)、小數(shù)部分和小數(shù)點(diǎn)。由整數(shù)、小數(shù)部分和小數(shù)點(diǎn)組成,整數(shù)和小數(shù)都是十進(jìn)制形式。例如,組成,整數(shù)和小數(shù)都是十進(jìn)制形式。例如,0.123,-125.46,.78,80.0等都是合法形式。等都是合法形式。(2)指數(shù)形式指數(shù)形式。由尾數(shù)、指數(shù)符號(hào)。由尾數(shù)、指數(shù)符號(hào)e或或E和指數(shù)組和指數(shù)組成,成,尾數(shù)是小數(shù)點(diǎn)左邊有且只有一位非零數(shù)字尾數(shù)是小
10、數(shù)點(diǎn)左邊有且只有一位非零數(shù)字的實(shí)數(shù)的實(shí)數(shù)。e或或E前面必須有數(shù)字,前面必須有數(shù)字,e或或E后面必須后面必須是整數(shù)。是整數(shù)。指數(shù)形式用于表示較大或者較小的實(shí)指數(shù)形式用于表示較大或者較小的實(shí)數(shù)。數(shù)。1. 基本類型定義基本類型定義類型說(shuō)明符類型說(shuō)明符:char2. 字符型數(shù)據(jù)存儲(chǔ)與取值范圍字符型數(shù)據(jù)存儲(chǔ)與取值范圍字符型數(shù)據(jù)的取值范圍:字符型數(shù)據(jù)的取值范圍:ASCII碼字符集中的可碼字符集中的可打印字符。字符數(shù)據(jù)存儲(chǔ)占打印字符。字符數(shù)據(jù)存儲(chǔ)占1個(gè)字節(jié),存儲(chǔ)時(shí)實(shí)個(gè)字節(jié),存儲(chǔ)時(shí)實(shí)際上存儲(chǔ)的是對(duì)應(yīng)字符的際上存儲(chǔ)的是對(duì)應(yīng)字符的ASCII碼值(即一個(gè)整碼值(即一個(gè)整數(shù)值)。數(shù)值)。3. 字符型數(shù)據(jù)的表示方法字符
11、型數(shù)據(jù)的表示方法 字符型數(shù)據(jù)在計(jì)算機(jī)中存儲(chǔ)的是字符的字符型數(shù)據(jù)在計(jì)算機(jī)中存儲(chǔ)的是字符的ASCII碼值的二進(jìn)制形式,一個(gè)字符的存儲(chǔ)占用碼值的二進(jìn)制形式,一個(gè)字符的存儲(chǔ)占用一個(gè)字節(jié)。因?yàn)橐粋€(gè)字節(jié)。因?yàn)锳SCII碼形式上就是碼形式上就是0 到到255之之間的整數(shù),間的整數(shù),因此因此C語(yǔ)言中字符型數(shù)據(jù)和整型數(shù)據(jù)語(yǔ)言中字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用可以通用。l字符數(shù)據(jù)字符數(shù)據(jù):指用:指用單引號(hào)單引號(hào)括起來(lái)的單個(gè)字符數(shù)據(jù)括起來(lái)的單個(gè)字符數(shù)據(jù),如,如A , %, :,9等。而等。而12或或abc是不是不合法的字符數(shù)據(jù)。合法的字符數(shù)據(jù)。l字符串?dāng)?shù)據(jù)字符串?dāng)?shù)據(jù):指用:指用雙引號(hào)雙引號(hào)括起來(lái)的單個(gè)或一串括起來(lái)的單個(gè)
12、或一串字符數(shù)據(jù),如字符數(shù)據(jù),如good、0132、w1、a等等。注意。注意a是字符串?dāng)?shù)據(jù)而不是字符數(shù)據(jù)。是字符串?dāng)?shù)據(jù)而不是字符數(shù)據(jù)。l為了便于為了便于C程序判斷字符串是否結(jié)束,系統(tǒng)程序判斷字符串是否結(jié)束,系統(tǒng)對(duì)每個(gè)字符串?dāng)?shù)據(jù)存儲(chǔ)時(shí)都在末尾添加一個(gè)結(jié)對(duì)每個(gè)字符串?dāng)?shù)據(jù)存儲(chǔ)時(shí)都在末尾添加一個(gè)結(jié)束標(biāo)志束標(biāo)志即即ASCII碼值為碼值為0的空操作符的空操作符0,它,它既不引起任何動(dòng)作也不會(huì)顯示輸出,所以存儲(chǔ)既不引起任何動(dòng)作也不會(huì)顯示輸出,所以存儲(chǔ)一個(gè)字符串的字節(jié)數(shù)應(yīng)該是字符串的長(zhǎng)度加一個(gè)字符串的字節(jié)數(shù)應(yīng)該是字符串的長(zhǎng)度加1。例如例如 hellohello 在計(jì)算機(jī)中表示形式在計(jì)算機(jī)中表示形式如圖如圖2.3
13、2.3所示所示:hello01041011081081110 圖圖2.3 hello 在計(jì)算機(jī)中的存儲(chǔ)示意圖在計(jì)算機(jī)中的存儲(chǔ)示意圖2.3.1常量常量常量常量 程序運(yùn)行過(guò)程中不能被改變的量。程序運(yùn)行過(guò)程中不能被改變的量。l整數(shù)在計(jì)算機(jī)中是準(zhǔn)確表示的,可以用十進(jìn)制、整數(shù)在計(jì)算機(jī)中是準(zhǔn)確表示的,可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)表示。八進(jìn)制和十六進(jìn)制數(shù)表示。當(dāng)用八進(jìn)制數(shù)表示當(dāng)用八進(jìn)制數(shù)表示時(shí),第一位數(shù)字前面必須加時(shí),第一位數(shù)字前面必須加0;當(dāng)用十六進(jìn)制當(dāng)用十六進(jìn)制數(shù)表示時(shí),第一位數(shù)字前而必須加數(shù)表示時(shí),第一位數(shù)字前而必須加0 x:無(wú)符號(hào)無(wú)符號(hào)整數(shù)的末尾必須加字母整數(shù)的末尾必須加字母u或或U;長(zhǎng)整數(shù)的末
14、尾必長(zhǎng)整數(shù)的末尾必須加字母須加字母I或或L。l字符型常數(shù)是用單引號(hào)括住的單個(gè)字符。用轉(zhuǎn)字符型常數(shù)是用單引號(hào)括住的單個(gè)字符。用轉(zhuǎn)義字符表示不可顯示字符。義字符表示不可顯示字符。轉(zhuǎn)義字符以轉(zhuǎn)義字符以“”開(kāi)頭,開(kāi)頭,后跟一個(gè)特定的字母或八進(jìn)制數(shù)或十六后跟一個(gè)特定的字母或八進(jìn)制數(shù)或十六進(jìn)制數(shù)表示的進(jìn)制數(shù)表示的ASCII代碼值。代碼值。l符號(hào)常數(shù)是用標(biāo)識(shí)符表示的常數(shù),它具符號(hào)常數(shù)是用標(biāo)識(shí)符表示的常數(shù),它具有變量的外表和常量的內(nèi)涵。有變量的外表和常量的內(nèi)涵。l用用#define定義的符號(hào)常數(shù)沒(méi)有類型和值定義的符號(hào)常數(shù)沒(méi)有類型和值的含義。在預(yù)編譯時(shí)由編譯系統(tǒng)將宏名的含義。在預(yù)編譯時(shí)由編譯系統(tǒng)將宏名用宏體替換
15、。用宏體替換。 define是編譯預(yù)處理命令,是編譯預(yù)處理命令,不屬于不屬于C語(yǔ)言關(guān)鍵字。語(yǔ)言關(guān)鍵字。l用用const定義的符號(hào)常數(shù)既有值又有類型定義的符號(hào)常數(shù)既有值又有類型的含義。該定義是在編譯階段完成的。的含義。該定義是在編譯階段完成的。1. 變量的有關(guān)概念變量的有關(guān)概念變量名變量名變量值變量值x98變量值變量值為變量分配的為變量分配的存儲(chǔ)單元存儲(chǔ)單元變量名變量名例如:例如:有變量有變量x x它的值是它的值是9898變量定義的一般格式:變量定義的一般格式:例如:例如:int i, j; long k, m; float x,y; char ch1,ch2;必須使用合法的標(biāo)識(shí)符作變量名必須使
16、用合法的標(biāo)識(shí)符作變量名不能使用關(guān)鍵字為變量命名不能使用關(guān)鍵字為變量命名分號(hào)是語(yǔ)句的組成部分分號(hào)是語(yǔ)句的組成部分C語(yǔ)言的變量名和它的類型無(wú)關(guān);語(yǔ)言的變量名和它的類型無(wú)關(guān);在函數(shù)或復(fù)合語(yǔ)句中必須把要定義的變量全部定義,即在函數(shù)或復(fù)合語(yǔ)句中必須把要定義的變量全部定義,即不允許在后面的執(zhí)行語(yǔ)句中插入變量的定義。不允許在后面的執(zhí)行語(yǔ)句中插入變量的定義。 【類型修飾符類型修飾符】數(shù)據(jù)類型數(shù)據(jù)類型 變量表;變量表; 允許在說(shuō)明變量的時(shí)候?qū)ψ兞抠x初值。允許在說(shuō)明變量的時(shí)候?qū)ψ兞抠x初值。例如:例如:int a=5,b=10+2; double x=23.568,y ; char ch1=a,ch2=66,ch3
17、=142; 表示定義變量并對(duì)變量存儲(chǔ)單元賦值。表示定義變量并對(duì)變量存儲(chǔ)單元賦值。錯(cuò)誤的初始化:錯(cuò)誤的初始化: int a=3+b,b=5; float m=n=23.16; (1)注意變量在賦值或運(yùn)算時(shí),)注意變量在賦值或運(yùn)算時(shí),其值要在該數(shù)據(jù)類其值要在該數(shù)據(jù)類型的值域內(nèi)型的值域內(nèi),否則會(huì)產(chǎn)生數(shù)據(jù)溢出。,否則會(huì)產(chǎn)生數(shù)據(jù)溢出。(2)由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因)由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的,此能提供的有效數(shù)字總是有限的,在有效位以外在有效位以外的數(shù)字將被舍去的數(shù)字將被舍去,由此可能會(huì)產(chǎn)生一些誤差。由此可能會(huì)產(chǎn)生一些誤差。(3)字符型數(shù)據(jù)與整型數(shù)
18、據(jù)可通用,增加了程序設(shè))字符型數(shù)據(jù)與整型數(shù)據(jù)可通用,增加了程序設(shè)計(jì)的自由度,例如對(duì)字符作多種轉(zhuǎn)換就比較方便計(jì)的自由度,例如對(duì)字符作多種轉(zhuǎn)換就比較方便。但也需注意,。但也需注意,字符型數(shù)據(jù)與整型數(shù)據(jù)的通用是字符型數(shù)據(jù)與整型數(shù)據(jù)的通用是有條件的,即在有條件的,即在0255的范圍之內(nèi)才可以通用。的范圍之內(nèi)才可以通用?!纠?.3】計(jì)算字符計(jì)算字符B與整型數(shù)據(jù)與整型數(shù)據(jù)20的和。的和。#include stdio.hvoid main() char a; /* 說(shuō)明說(shuō)明a為字符型變量為字符型變量 */int b; /* 說(shuō)明說(shuō)明b為整型變量為整型變量 */a=B; /* 為為a賦字符常量賦字符常量B
19、*/b=a+20; /* 計(jì)算計(jì)算66+20并賦值給字符變量并賦值給字符變量b */printf(%c,%d,%c,%dn,a,a,b,b); /* 分別以字符型和整型兩種格式輸出分別以字符型和整型兩種格式輸出a、b */程序運(yùn)行的輸出結(jié)果如下:程序運(yùn)行的輸出結(jié)果如下:B,66,V,86l主要內(nèi)容:主要內(nèi)容:算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式位運(yùn)算符和位運(yùn)算表達(dá)式位運(yùn)算符和位運(yùn)算表達(dá)式條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符和條件表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)
20、運(yùn)算符和逗號(hào)表達(dá)式其他運(yùn)算符及其運(yùn)算其他運(yùn)算符及其運(yùn)算l作用:作用:對(duì)運(yùn)算對(duì)象完成規(guī)定的操作運(yùn)算對(duì)運(yùn)算對(duì)象完成規(guī)定的操作運(yùn)算l類型:類型:按運(yùn)算對(duì)象分:按運(yùn)算對(duì)象分:l單目、雙目、三目單目、雙目、三目按功能分:按功能分:l算術(shù)、賦值、關(guān)系、邏輯算術(shù)、賦值、關(guān)系、邏輯l條件、逗號(hào)、位、其他條件、逗號(hào)、位、其他l優(yōu)先級(jí)優(yōu)先級(jí)指各種運(yùn)算符號(hào)的運(yùn)算優(yōu)先順序指各種運(yùn)算符號(hào)的運(yùn)算優(yōu)先順序例如:例如:算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算 算術(shù)運(yùn)算中先算術(shù)運(yùn)算中先 * * / / 后后 + - + -l結(jié)合性結(jié)合性指運(yùn)算符號(hào)和運(yùn)算對(duì)象的結(jié)合方向指運(yùn)算符號(hào)和運(yùn)算對(duì)象的結(jié)合方向分為:分為:從左向右從左向右
21、( (左結(jié)合左結(jié)合) )和和從右向左從右向左( (右結(jié)合右結(jié)合) )例如:算術(shù)運(yùn)算符為左結(jié)合例如:算術(shù)運(yùn)算符為左結(jié)合 a-b+4a-b+4 賦值運(yùn)算符為右結(jié)合賦值運(yùn)算符為右結(jié)合 a= b = 5a= b = 5表表2.6 6 運(yùn)算符優(yōu)先級(jí)和結(jié)合性運(yùn)算符優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)運(yùn)算符名稱操作數(shù)個(gè)數(shù)結(jié)合規(guī)則1( ) -圓括號(hào)運(yùn)算符數(shù)組下標(biāo)運(yùn)算符指向結(jié)構(gòu)指針成員運(yùn)算符取結(jié)構(gòu)成員運(yùn)算符-(從左至右)2!+-(類型)*&sizeof邏輯非運(yùn)算符按位取反運(yùn)算符自增運(yùn)算符自減運(yùn)算符負(fù)號(hào)運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符取地址的內(nèi)容(指針運(yùn)算)取地址運(yùn)算符求字節(jié)數(shù)運(yùn)算符1(單目運(yùn)算符)4+-加法運(yùn)算符減法運(yùn)算符2(
22、雙目運(yùn)算符)-5左移運(yùn)算符右移運(yùn)算符2(雙目運(yùn)算符)-6=小于運(yùn)算符小于等于運(yùn)算符大于運(yùn)算符大于等于運(yùn)算符2(雙目運(yùn)算符)-7=!=等于運(yùn)算符不等于運(yùn)算符2(雙目運(yùn)算符)-優(yōu)先級(jí)運(yùn)算符名稱操作數(shù)個(gè)數(shù)結(jié)合規(guī)則8&按位“與”運(yùn)算符2(雙目運(yùn)算符)-9按位“異或”運(yùn)算符2(雙目運(yùn)算符)-10|按位“或”運(yùn)算符2(雙目運(yùn)算符)-11&邏輯與運(yùn)算符2(雙目運(yùn)算符)-12|邏輯或運(yùn)算符2(雙目運(yùn)算符)-13?:條件運(yùn)算符3(三目運(yùn)算符)= =&= = |=賦值運(yùn)算符2(雙目運(yùn)算符)l什么是表達(dá)式什么是表達(dá)式表達(dá)式由運(yùn)算符和操作數(shù)組成,操作數(shù)是運(yùn)表達(dá)式由運(yùn)算符和操作數(shù)組成,操作數(shù)是運(yùn)
23、算符的操作對(duì)象,可以是常量、變量、函數(shù)算符的操作對(duì)象,可以是常量、變量、函數(shù)和表達(dá)式。和表達(dá)式。l表達(dá)式的書(shū)寫(xiě)表達(dá)式的書(shū)寫(xiě)C C語(yǔ)言的表達(dá)式采用線性形式書(shū)寫(xiě)。語(yǔ)言的表達(dá)式采用線性形式書(shū)寫(xiě)。l數(shù)學(xué)表達(dá)式數(shù)學(xué)表達(dá)式 應(yīng)該寫(xiě)成應(yīng)該寫(xiě)成1/6-i+j1/6-i+j* *j j* *j j* *j j* *j j* *j j。C C語(yǔ)言的表達(dá)式只能使用語(yǔ)言的表達(dá)式只能使用C C語(yǔ)言中合法的運(yùn)算語(yǔ)言中合法的運(yùn)算符和操作數(shù)符和操作數(shù)l2r2r應(yīng)該寫(xiě)成應(yīng)該寫(xiě)成2 2* *3.141593.14159* *r r661ji 150+b*212.456 b=(+a)-2a /= a *= (a = 2) f=ab
24、c -a |+b&c+ max=ab ? a : b a=3,a+=3,a*a 1/(float)a+6 l算術(shù)運(yùn)算符的優(yōu)先級(jí)算術(shù)運(yùn)算符的優(yōu)先級(jí) ( ) + - + - * / % + - 同級(jí) 同級(jí) 同級(jí) l沒(méi)有乘方運(yùn)算符沒(méi)有乘方運(yùn)算符,要計(jì)算,要計(jì)算a3要寫(xiě)作要寫(xiě)作 a*a*a 的連乘,的連乘,或用標(biāo)準(zhǔn)庫(kù)函數(shù)或用標(biāo)準(zhǔn)庫(kù)函數(shù) pow(a, 3)l “/”的運(yùn)算對(duì)象可為各種類型數(shù)據(jù),但是當(dāng)進(jìn)行的運(yùn)算對(duì)象可為各種類型數(shù)據(jù),但是當(dāng)進(jìn)行兩個(gè)整型數(shù)據(jù)相除時(shí),運(yùn)算結(jié)果也是整型數(shù)據(jù)兩個(gè)整型數(shù)據(jù)相除時(shí),運(yùn)算結(jié)果也是整型數(shù)據(jù) l“%”要求運(yùn)算對(duì)象必須是整型數(shù)據(jù),功能是求要求運(yùn)算對(duì)象必須是整型數(shù)據(jù),功能
25、是求兩數(shù)相除的余數(shù),余數(shù)的符號(hào)與被除數(shù)的符號(hào)兩數(shù)相除的余數(shù),余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。相同。 l+ + -是單目運(yùn)算符是單目運(yùn)算符l有前綴和后綴兩種形式有前綴和后綴兩種形式 前綴形式前綴形式: : 先自增先自增( (自減自減) )再引用;再引用;后綴形式后綴形式: : 先引用再自增先引用再自增( (自減自減) );l功能:功能: 前綴形式前綴形式 + + a a 等價(jià)于等價(jià)于 a = a + 1 a = a + 1 - a a 等價(jià)于等價(jià)于 a = a a = a 1 1 后綴形式后綴形式 a + a + 等價(jià)于等價(jià)于 a = a + 1a = a + 1 a a - 等價(jià)于等價(jià)于 a =
26、 a a = a 1 1當(dāng)當(dāng) a5 時(shí)時(shí) +a 表達(dá)式的值為表達(dá)式的值為 6,且且 a6 a+ 表達(dá)式的值為表達(dá)式的值為5 ,且,且 a6 b=+a 等價(jià)于等價(jià)于 a=a+1; b=a 表達(dá)式的值為表達(dá)式的值為6,且,且 a=6, b=6 b=a+ 等價(jià)于等價(jià)于 b=a; a=a+1 表達(dá)式的值為表達(dá)式的值為5,且,且 a=6, b=5 l自增、自減運(yùn)算符只能用于整型變量,而不能用自增、自減運(yùn)算符只能用于整型變量,而不能用于常量或表達(dá)式。于常量或表達(dá)式。 例如:例如: 5+、(a+2)+ 不合法。不合法。 l具有右結(jié)合性,結(jié)合方向?yàn)閺挠业阶?。具有右結(jié)合性,結(jié)合方向?yàn)閺挠业阶?。例如:例如?a+
27、 等價(jià)于等價(jià)于 -(a+) l C語(yǔ)言的表達(dá)式中語(yǔ)言的表達(dá)式中“+”,“-”運(yùn)算符,如果使運(yùn)算符,如果使用不當(dāng),很容易導(dǎo)致錯(cuò)誤。用不當(dāng),很容易導(dǎo)致錯(cuò)誤。l例如:例如:設(shè)設(shè)i=3,表達(dá)式,表達(dá)式k=(+i)+(+i)+(+i)”不同的不同的C編譯系統(tǒng)結(jié)合方式不一樣,所以不同的編譯系統(tǒng)結(jié)合方式不一樣,所以不同的編譯系統(tǒng)中,針對(duì)上述表達(dá)式得出的答案并不編譯系統(tǒng)中,針對(duì)上述表達(dá)式得出的答案并不一定同編程者的原意相同。一定同編程者的原意相同?!纠?.6】自增自減運(yùn)算的應(yīng)用。自增自減運(yùn)算的應(yīng)用。#include “stdio.h”void main() int i,j; i=j=5; printf (“
28、i+=%d, j-=%dn”, i+, j-); printf (“+i=%d, -j=%dn”, +i, -j); printf (“i+=%d, j-=%dn”, i+, j-); printf (“+i=%d, -j=%dn”, +i, -j); printf (“i=%d, j=%dn”, i, j);運(yùn)行結(jié)果運(yùn)行結(jié)果:i+=5, j-=5+i=7, -j=3i+=7, j-=3+i=9, -j=1i=9, j=1 l關(guān)系運(yùn)算符關(guān)系運(yùn)算符 ( (左結(jié)合)左結(jié)合) = = = != 較高較高 較低較低l關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將運(yùn)算對(duì)象連接成的式子用關(guān)系運(yùn)算符將運(yùn)算對(duì)象連接成的式
29、子 例如:例如:12=c 等價(jià)于等價(jià)于 a = ( b=c ) 與與 (a=b)=c 不等價(jià)不等價(jià)l關(guān)系運(yùn)算符優(yōu)先于賦值,低于算術(shù)關(guān)系運(yùn)算符優(yōu)先于賦值,低于算術(shù)l關(guān)系運(yùn)算的結(jié)果應(yīng)該是關(guān)系運(yùn)算的結(jié)果應(yīng)該是邏輯值邏輯值。C C語(yǔ)言用數(shù)值用語(yǔ)言用數(shù)值用 1 1 表示表示邏輯真邏輯真, 0 0 表示表示邏輯假邏輯假例如:例如: 7575 的值是的值是 1 1,5757 的值是的值是 0 0 abab的值是的值是 0 0, aba= z l邏輯運(yùn)算符的優(yōu)先級(jí)邏輯運(yùn)算符的優(yōu)先級(jí) 和結(jié)合性:和結(jié)合性:!是單目運(yùn)算符,是單目運(yùn)算符,右結(jié)合右結(jié)合,高于算術(shù),高于算術(shù)& 和和 | 是雙目運(yùn)算符,是雙目運(yùn)算
30、符,左結(jié)合左結(jié)合,高于,高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符賦值運(yùn)算符,低于關(guān)系運(yùn)算符l從左到右依次進(jìn)行邏輯計(jì)算從左到右依次進(jìn)行邏輯計(jì)算運(yùn)算對(duì)象為運(yùn)算對(duì)象為非非0 0表示表示邏輯真邏輯真運(yùn)算對(duì)象為運(yùn)算對(duì)象為 0 0 表示表示邏輯假邏輯假l邏輯運(yùn)算的結(jié)果為邏輯運(yùn)算的結(jié)果為 0 0 或或 1 1例如設(shè):例如設(shè):a=15,b=0,c=-2 a & b & c 結(jié)果為結(jié)果為0 a | b | c 結(jié)果為結(jié)果為1 (a+c) | b & c 結(jié)果為結(jié)果為1l運(yùn)算按照運(yùn)算按照從左至右從左至右的順序進(jìn)行,一旦能夠的順序進(jìn)行,一旦能夠確定邏輯表達(dá)式的值,就立即結(jié)束運(yùn)算確定邏輯表達(dá)式的值,就立
31、即結(jié)束運(yùn)算邏輯運(yùn)算的短路性質(zhì)邏輯運(yùn)算的短路性質(zhì)例如例如設(shè):設(shè):a=1,b=0,c=-2a & b & c(a+) | + b& -c為為 0,運(yùn)算終止,表達(dá)式,運(yùn)算終止,表達(dá)式值值為為 0為非為非0,運(yùn)算終止,表達(dá)式值為,運(yùn)算終止,表達(dá)式值為 1且且a為為2,b為為0,c為為-2 (b,c保持原值保持原值)l表示數(shù)學(xué)公式表示數(shù)學(xué)公式abc l判斷判斷a, b, c三條線段能否組成一個(gè)三角形三條線段能否組成一個(gè)三角形 la, b不同時(shí)為負(fù)不同時(shí)為負(fù) a+bc & a+cb & b+caa=0 | b=0!(a0 & b0) (a=0)|(a=0&a
32、mp;b=0&b=0)ab & bcl條件運(yùn)算符:條件運(yùn)算符:? :l條件表達(dá)式的一般形式條件表達(dá)式的一般形式 表達(dá)式表達(dá)式1 ? 表達(dá)式表達(dá)式2 : 表達(dá)式表達(dá)式3例如:例如:m=10 & b-20 ? a : b x=3+a5 ? 100 : 200 lC語(yǔ)言中唯一的語(yǔ)言中唯一的三目運(yùn)算符三目運(yùn)算符,要正確區(qū)分,要正確區(qū)分用用 ?和和 :分隔的表達(dá)式分隔的表達(dá)式l涉及條件運(yùn)算符的優(yōu)先級(jí)與結(jié)合性涉及條件運(yùn)算符的優(yōu)先級(jí)與結(jié)合性l條件運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,條件運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符低于其他運(yùn)算符 例如:例如: m=10 & b
33、-20 ? a : b x=3+a5 ? 100 : 200等價(jià)于:等價(jià)于:(m=10 & b-20) a b等價(jià)于:等價(jià)于:x= ( 3+a5 ) 100 200 )l逗號(hào)表達(dá)式的一般形式逗號(hào)表達(dá)式的一般形式 表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2,表達(dá)式,表達(dá)式nl 逗號(hào)表達(dá)式的值逗號(hào)表達(dá)式的值從左向右,依次對(duì)表達(dá)式求值,最后得到從左向右,依次對(duì)表達(dá)式求值,最后得到表表達(dá)式達(dá)式n 的值就是逗號(hào)表達(dá)式的值的值就是逗號(hào)表達(dá)式的值例如:例如: a=5, a+, a* 3 表達(dá)式值為表達(dá)式值為 18,且,且a=6 t=1, t+5, t+ 表達(dá)式值為表達(dá)式值為 1,且,且t=2 x=(a=3*5
34、, a*4 ) 賦值表達(dá)式賦值表達(dá)式的值為的值為60,且,且x=60, a=15l賦值運(yùn)算符賦值運(yùn)算符( (右結(jié)合)右結(jié)合) = += - -= *= /= %= &= |= = = = l賦值表達(dá)式賦值表達(dá)式將將表達(dá)式的值表達(dá)式的值存入存入變量變量對(duì)應(yīng)的內(nèi)存單元中對(duì)應(yīng)的內(nèi)存單元中m=12b=(+a)-2 m%=3+n 等價(jià)于等價(jià)于 m=m%(3+n) x *= (x = 5)【例例2.8】 賦值運(yùn)算應(yīng)用實(shí)例。賦值運(yùn)算應(yīng)用實(shí)例。#include stdio.hvoid main() int i, j; float x, y; i=j=1; x=y=1.1f; printf (i=%d,
35、 j=%dn, i, j); x=i+j; y+=1;/*等價(jià)于等價(jià)于y=y+1*/ printf (x=%4.2f,y=%4.2fn, x, y); i=i+j; x=2*x+y; printf (“i=%d, x=%4.2fn”, i, x);運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:i=1, j=1x=2.00, y=2.10i=3, x=6.10l位運(yùn)算符的運(yùn)算對(duì)象只能是位運(yùn)算符的運(yùn)算對(duì)象只能是整型數(shù)據(jù)整型數(shù)據(jù)或或字符型數(shù)據(jù)字符型數(shù)據(jù),不能是實(shí)型數(shù)據(jù)不能是實(shí)型數(shù)據(jù)l運(yùn)算對(duì)象一律按二進(jìn)制補(bǔ)碼參加運(yùn)算,并運(yùn)算對(duì)象一律按二進(jìn)制補(bǔ)碼參加運(yùn)算,并按位進(jìn)行運(yùn)按位進(jìn)行運(yùn)算算l位運(yùn)算的結(jié)果是一個(gè)整型數(shù)據(jù)位運(yùn)算的結(jié)果是一
36、個(gè)整型數(shù)據(jù)低于單目、算術(shù)運(yùn)算符,高于其低于單目、算術(shù)運(yùn)算符,高于其他運(yùn)算符他運(yùn)算符低于單目、算術(shù)和關(guān)系運(yùn)算符,高低于單目、算術(shù)和關(guān)系運(yùn)算符,高于其他運(yùn)算符于其他運(yùn)算符(1)位邏輯運(yùn)算)位邏輯運(yùn)算按位取反運(yùn)算按位取反運(yùn)算按位取反運(yùn)算符:按位取反運(yùn)算符:按位取反運(yùn)算用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位求反,即按位取反運(yùn)算用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位求反,即“1”變?yōu)樽優(yōu)椤?”,“0”變?yōu)樽優(yōu)椤?運(yùn)算常用于產(chǎn)生一些特殊的數(shù)。運(yùn)算常用于產(chǎn)生一些特殊的數(shù)。運(yùn)算還常用于加密子程序。運(yùn)算還常用于加密子程序。例如:例如:初始字節(jié)內(nèi)容初始字節(jié)內(nèi)容 00000101取反后取反后 11111010按位與運(yùn)算按位與運(yùn)算 按位與運(yùn)算符:按
37、位與運(yùn)算符:&按位與運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位都按位與運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位都是是1時(shí),則該位的運(yùn)算結(jié)果為時(shí),則該位的運(yùn)算結(jié)果為1,否則為,否則為“0“。例如:例如:0 x29&0 x370 x29&0 x37的運(yùn)算的運(yùn)算 0 x29 0 x29: 00101001 00101001 0 x37 0 x37: 00110111 00110111與運(yùn)算結(jié)果為:與運(yùn)算結(jié)果為:00100001,00100001,即即0 x210 x21。按位或運(yùn)算按位或運(yùn)算按位或運(yùn)算符:按位或運(yùn)算符:按位或運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位都按位或運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)
38、位都是是0 0時(shí),則該位的運(yùn)算結(jié)果為時(shí),則該位的運(yùn)算結(jié)果為0 0,否則為,否則為1 1。例如:例如:0 x29|0 x370 x29|0 x37的運(yùn)算的運(yùn)算0 x290 x29: 00101001 001010010 x370 x37: 00110111 00110111按位或結(jié)果:按位或結(jié)果:0011111100111111,即等于,即等于0 x3f0 x3f。按位異或運(yùn)算按位異或運(yùn)算按位異或運(yùn)算符:按位異或運(yùn)算符:按位異或運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位按位異或運(yùn)算的規(guī)則是當(dāng)兩個(gè)操作數(shù)的對(duì)應(yīng)位相同時(shí),則該位的運(yùn)算結(jié)果為相同時(shí),則該位的運(yùn)算結(jié)果為0,否則為,否則為1。例如:例如:0 x290 x290 x370 x37的運(yùn)算的運(yùn)算0 x290 x29: 00101001 001010010 x370 x37: 00110111 00110111按位異或結(jié)果:按位異或結(jié)果:0001111000011110,即等于,即等于0 x1e0 x1e移位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技產(chǎn)品網(wǎng)絡(luò)推廣的挑戰(zhàn)與機(jī)遇分析
- 科技創(chuàng)新基于用戶體驗(yàn)提升產(chǎn)品信賴度的設(shè)計(jì)方法研究
- 搜索租賃合同范本
- 轉(zhuǎn)讓果園合同范本
- 倉(cāng)庫(kù)內(nèi)務(wù)管理的優(yōu)化方案計(jì)劃
- 獨(dú)立建站合同范本
- 班主任的工作狀態(tài)調(diào)整計(jì)劃
- 隔斷裝飾合同范本
- 科技企業(yè)中的溝通策略與人際關(guān)系管理
- 廠房出資合同范本
- 【寒假開(kāi)學(xué)第一課】AI時(shí)代做自己的哪吒
- 2025年度光伏電站光伏組件回收處理合同示范文本
- 2025年春季少先隊(duì)工作計(jì)劃及安排表(附:少先隊(duì)每月工作安排表)
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 《真希望你也喜歡自己》房琪-讀書(shū)分享
- 2024年山東省高考生物試卷真題(含答案解析)
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 小學(xué)科學(xué)湘科版六年級(jí)下冊(cè)全冊(cè)同步練習(xí)含答案
- 思維第一:全面提升學(xué)習(xí)力
- 主斜井架空乘人裝置安裝安全技術(shù)措施方案
- 《鐵路橋梁檢定評(píng)估工作規(guī)則》鐵運(yùn)2004第42號(hào)
評(píng)論
0/150
提交評(píng)論