




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章第二章第二章第二章第二章第二章 數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式數(shù)據(jù)類型和表達式2.1 詞法構(gòu)成詞法構(gòu)成2.2 數(shù)據(jù)類型數(shù)據(jù)類型2.3 常量與變量常量與變量2.4 運算符和表達式運算符和表達式2.1 詞法構(gòu)成詞法構(gòu)成l字符集字符集l標(biāo)識符標(biāo)識符l關(guān)鍵字關(guān)鍵字l注釋符注釋符C語言的字符集是語言的字符集是ASCII字符集的一個子集,由字字符集的一個子集,由字母,數(shù)字,標(biāo)點符號和特殊字符構(gòu)成。母,數(shù)字,標(biāo)點符號和特殊字符構(gòu)成。(1)英文字母:)英文字母:az,AZ(2)數(shù)字:)數(shù)字:09(3)空白符:空格符,制表符,換行符等統(tǒng)稱為)空白符:空格符
2、,制表符,換行符等統(tǒng)稱為空白符??瞻追#?)特殊字符:)特殊字符: 標(biāo)點符號標(biāo)點符號 轉(zhuǎn)義字符轉(zhuǎn)義字符表表2. .1 常用轉(zhuǎn)義字符表常用轉(zhuǎn)義字符表名稱符號名稱符號空字符(null)0換行(newline)n換頁(formfeed)f回車(carriage return)r退格(backspace)b響鈴(bell)a水平制表(horizontal tab)t垂直制表(vertical tab)v反斜線(backslash)問號(question mark)?單引號(single quotation marks)雙引號(double quotation marks)”1到3位8進制數(shù)所代表的字
3、符ddd1到2位16進制數(shù)所代表的字符xhhlC語言規(guī)定,標(biāo)識符只能是語言規(guī)定,標(biāo)識符只能是字母字母(AZ,az)、數(shù)數(shù)字字(09)、下劃線下劃線( _ )組成的字符串,并且組成的字符串,并且第一個第一個字符必須是字母或下劃線字符必須是字母或下劃線。注意注意l(1)C語言中標(biāo)識符語言中標(biāo)識符嚴(yán)格區(qū)分大小寫嚴(yán)格區(qū)分大小寫(2)ANSI C標(biāo)準(zhǔn)規(guī)定標(biāo)識符的長度可達標(biāo)準(zhǔn)規(guī)定標(biāo)識符的長度可達31個個字字符符(3)標(biāo)識符命名應(yīng))標(biāo)識符命名應(yīng)“見名知義見名知義”;(4)變量名都要)變量名都要“先定義,后使用先定義,后使用”。lANSI C定義的關(guān)鍵字共定義的關(guān)鍵字共32個,根據(jù)關(guān)鍵字的作個,根據(jù)關(guān)鍵字的作
4、用,可將其分為用,可將其分為數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字、關(guān)鍵字、控制語句控制語句關(guān)關(guān)鍵字、鍵字、存儲類型存儲類型關(guān)鍵字和關(guān)鍵字和其它其它關(guān)鍵字四類關(guān)鍵字四類l Microsoft C在在ANSI C基礎(chǔ)上擴展的關(guān)鍵字有基礎(chǔ)上擴展的關(guān)鍵字有(19個)個)lC語言的注釋符是以語言的注釋符是以 “/*”開頭,并以開頭,并以 “*/”結(jié)結(jié)尾,其間的內(nèi)容為注釋,一般出現(xiàn)在程序語句尾,其間的內(nèi)容為注釋,一般出現(xiàn)在程序語句行之后,用來幫助閱讀程序。行之后,用來幫助閱讀程序。數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型( )空類型空類型(void)字符型字符型(char)枚舉類型枚舉類型(en
5、um)數(shù)組類型數(shù)組類型( )結(jié)構(gòu)體類型結(jié)構(gòu)體類型(struct)共用體類型共用體類型(union)整型整型實型實型單精度型單精度型(float)雙精度型雙精度型(double)基本整型基本整型長整型長整型短整型短整型無符號整型無符號整型整型數(shù)就是通常使用的整數(shù),分為帶符號整數(shù)和整型數(shù)就是通常使用的整數(shù),分為帶符號整數(shù)和無符號整數(shù)兩大類。無符號整數(shù)兩大類。1. 基本類型定義基本類型定義類型說明符:類型說明符:int例如,例如,int a,b,c;說明變量說明變量a,b,c被同時定義為基本整型數(shù)據(jù)類型。被同時定義為基本整型數(shù)據(jù)類型。2. 整型數(shù)據(jù)的存儲與取值范圍整型數(shù)據(jù)的存儲與取值范圍表表2.2
6、2 Visual C+ 6.0 環(huán)境中整型數(shù)據(jù)屬性表環(huán)境中整型數(shù)據(jù)屬性表數(shù)據(jù)類型占用字節(jié)數(shù)二進制位長度值域int432-21474836482147483647short int216-3276832767long int432-21474836482147483647signed int216signed short int216signed long int432unsigned int216065535unsigned short int216同unsigned intunsigned long int432042949672953. 整型數(shù)據(jù)的表示形式整型數(shù)據(jù)的表示形式l十進制整數(shù)十進
7、制整數(shù):254,-127,0都是正確的,而都是正確的,而0291(不能有前導(dǎo)不能有前導(dǎo)0)、23D (含有非十進制數(shù)碼含有非十進制數(shù)碼)都都是非法的;是非法的;l八進制整數(shù)八進制整數(shù):021,-017都是正確的,它們分別都是正確的,它們分別代表十進制整數(shù)代表十進制整數(shù)17,-15,而,而256(無前綴無前綴0)、03A2(包含了非八進制數(shù)碼包含了非八進制數(shù)碼)是非法的;是非法的;l十六進制整數(shù)十六進制整數(shù):0 x12,0 x1F都是正確的,它們都是正確的,它們分別代表十進制整數(shù)分別代表十進制整數(shù)18,31, 而而5A (無前綴無前綴0 x)、0 x3H (含有非十六進制數(shù)碼含有非十六進制數(shù)碼)
8、是非法的。是非法的。 1. 基本類型定義基本類型定義 類型說明符類型說明符:float(單精度型),(單精度型),double(雙精(雙精度型),度型),long double(長雙精度型)(長雙精度型)2. 實數(shù)存儲與取值范圍實數(shù)存儲與取值范圍在計算機中,實數(shù)是以浮點數(shù)形式存儲的,所以在計算機中,實數(shù)是以浮點數(shù)形式存儲的,所以通常將單精度實數(shù)稱為浮點數(shù)。例如單精度實型通常將單精度實數(shù)稱為浮點數(shù)。例如單精度實型數(shù)據(jù)在計算機中的存放形式見圖數(shù)據(jù)在計算機中的存放形式見圖2.1所示。其中,所示。其中,小數(shù)部分一般都采用規(guī)格化的數(shù)據(jù)形式。小數(shù)部分一般都采用規(guī)格化的數(shù)據(jù)形式。圖圖2.1單精度實型數(shù)據(jù)在計
9、算機中的存放形式單精度實型數(shù)據(jù)在計算機中的存放形式3. 浮點數(shù)的表示形式浮點數(shù)的表示形式在在C語言中,實數(shù)表示只采用十進制。它有二種語言中,實數(shù)表示只采用十進制。它有二種形式:形式: 十進制數(shù)形式和指數(shù)形式。十進制數(shù)形式和指數(shù)形式。(1)十進制數(shù)形式十進制數(shù)形式。由整數(shù)、小數(shù)部分和小數(shù)點。由整數(shù)、小數(shù)部分和小數(shù)點組成,整數(shù)和小數(shù)都是十進制形式。例如,組成,整數(shù)和小數(shù)都是十進制形式。例如,0.123,-125.46,.78,80.0等都是合法形式。等都是合法形式。(2)指數(shù)形式指數(shù)形式。由尾數(shù)、指數(shù)符號。由尾數(shù)、指數(shù)符號e或或E和指數(shù)組和指數(shù)組成,成,尾數(shù)是小數(shù)點左邊有且只有一位非零數(shù)字尾數(shù)是小
10、數(shù)點左邊有且只有一位非零數(shù)字的實數(shù)的實數(shù)。e或或E前面必須有數(shù)字,前面必須有數(shù)字,e或或E后面必須后面必須是整數(shù)。是整數(shù)。指數(shù)形式用于表示較大或者較小的實指數(shù)形式用于表示較大或者較小的實數(shù)。數(shù)。1. 基本類型定義基本類型定義類型說明符類型說明符:char2. 字符型數(shù)據(jù)存儲與取值范圍字符型數(shù)據(jù)存儲與取值范圍字符型數(shù)據(jù)的取值范圍:字符型數(shù)據(jù)的取值范圍:ASCII碼字符集中的可碼字符集中的可打印字符。字符數(shù)據(jù)存儲占打印字符。字符數(shù)據(jù)存儲占1個字節(jié),存儲時實個字節(jié),存儲時實際上存儲的是對應(yīng)字符的際上存儲的是對應(yīng)字符的ASCII碼值(即一個整碼值(即一個整數(shù)值)。數(shù)值)。3. 字符型數(shù)據(jù)的表示方法字符
11、型數(shù)據(jù)的表示方法 字符型數(shù)據(jù)在計算機中存儲的是字符的字符型數(shù)據(jù)在計算機中存儲的是字符的ASCII碼值的二進制形式,一個字符的存儲占用碼值的二進制形式,一個字符的存儲占用一個字節(jié)。因為一個字節(jié)。因為ASCII碼形式上就是碼形式上就是0 到到255之之間的整數(shù),間的整數(shù),因此因此C語言中字符型數(shù)據(jù)和整型數(shù)據(jù)語言中字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用可以通用。l字符數(shù)據(jù)字符數(shù)據(jù):指用:指用單引號單引號括起來的單個字符數(shù)據(jù)括起來的單個字符數(shù)據(jù),如,如A , %, :,9等。而等。而12或或abc是不是不合法的字符數(shù)據(jù)。合法的字符數(shù)據(jù)。l字符串?dāng)?shù)據(jù)字符串?dāng)?shù)據(jù):指用:指用雙引號雙引號括起來的單個或一串括起來的單個
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)對每個字符串?dāng)?shù)據(jù)存儲時都在末尾添加一個結(jié)對每個字符串?dāng)?shù)據(jù)存儲時都在末尾添加一個結(jié)束標(biāo)志束標(biāo)志即即ASCII碼值為碼值為0的空操作符的空操作符0,它,它既不引起任何動作也不會顯示輸出,所以存儲既不引起任何動作也不會顯示輸出,所以存儲一個字符串的字節(jié)數(shù)應(yīng)該是字符串的長度加一個字符串的字節(jié)數(shù)應(yīng)該是字符串的長度加1。例如例如 hellohello 在計算機中表示形式在計算機中表示形式如圖如圖2.3
13、2.3所示所示:hello01041011081081110 圖圖2.3 hello 在計算機中的存儲示意圖在計算機中的存儲示意圖2.3.1常量常量常量常量 程序運行過程中不能被改變的量。程序運行過程中不能被改變的量。l整數(shù)在計算機中是準(zhǔn)確表示的,可以用十進制、整數(shù)在計算機中是準(zhǔn)確表示的,可以用十進制、八進制和十六進制數(shù)表示。八進制和十六進制數(shù)表示。當(dāng)用八進制數(shù)表示當(dāng)用八進制數(shù)表示時,第一位數(shù)字前面必須加時,第一位數(shù)字前面必須加0;當(dāng)用十六進制當(dāng)用十六進制數(shù)表示時,第一位數(shù)字前而必須加數(shù)表示時,第一位數(shù)字前而必須加0 x:無符號無符號整數(shù)的末尾必須加字母整數(shù)的末尾必須加字母u或或U;長整數(shù)的末
14、尾必長整數(shù)的末尾必須加字母須加字母I或或L。l字符型常數(shù)是用單引號括住的單個字符。用轉(zhuǎn)字符型常數(shù)是用單引號括住的單個字符。用轉(zhuǎn)義字符表示不可顯示字符。義字符表示不可顯示字符。轉(zhuǎn)義字符以轉(zhuǎn)義字符以“”開頭,開頭,后跟一個特定的字母或八進制數(shù)或十六后跟一個特定的字母或八進制數(shù)或十六進制數(shù)表示的進制數(shù)表示的ASCII代碼值。代碼值。l符號常數(shù)是用標(biāo)識符表示的常數(shù),它具符號常數(shù)是用標(biāo)識符表示的常數(shù),它具有變量的外表和常量的內(nèi)涵。有變量的外表和常量的內(nèi)涵。l用用#define定義的符號常數(shù)沒有類型和值定義的符號常數(shù)沒有類型和值的含義。在預(yù)編譯時由編譯系統(tǒng)將宏名的含義。在預(yù)編譯時由編譯系統(tǒng)將宏名用宏體替換
15、。用宏體替換。 define是編譯預(yù)處理命令,是編譯預(yù)處理命令,不屬于不屬于C語言關(guān)鍵字。語言關(guān)鍵字。l用用const定義的符號常數(shù)既有值又有類型定義的符號常數(shù)既有值又有類型的含義。該定義是在編譯階段完成的。的含義。該定義是在編譯階段完成的。1. 變量的有關(guān)概念變量的有關(guān)概念變量名變量名變量值變量值x98變量值變量值為變量分配的為變量分配的存儲單元存儲單元變量名變量名例如:例如:有變量有變量x x它的值是它的值是9898變量定義的一般格式:變量定義的一般格式:例如:例如:int i, j; long k, m; float x,y; char ch1,ch2;必須使用合法的標(biāo)識符作變量名必須使
16、用合法的標(biāo)識符作變量名不能使用關(guān)鍵字為變量命名不能使用關(guān)鍵字為變量命名分號是語句的組成部分分號是語句的組成部分C語言的變量名和它的類型無關(guān);語言的變量名和它的類型無關(guān);在函數(shù)或復(fù)合語句中必須把要定義的變量全部定義,即在函數(shù)或復(fù)合語句中必須把要定義的變量全部定義,即不允許在后面的執(zhí)行語句中插入變量的定義。不允許在后面的執(zhí)行語句中插入變量的定義。 【類型修飾符類型修飾符】數(shù)據(jù)類型數(shù)據(jù)類型 變量表;變量表; 允許在說明變量的時候?qū)ψ兞抠x初值。允許在說明變量的時候?qū)ψ兞抠x初值。例如:例如:int a=5,b=10+2; double x=23.568,y ; char ch1=a,ch2=66,ch3
17、=142; 表示定義變量并對變量存儲單元賦值。表示定義變量并對變量存儲單元賦值。錯誤的初始化:錯誤的初始化: int a=3+b,b=5; float m=n=23.16; (1)注意變量在賦值或運算時,)注意變量在賦值或運算時,其值要在該數(shù)據(jù)類其值要在該數(shù)據(jù)類型的值域內(nèi)型的值域內(nèi),否則會產(chǎn)生數(shù)據(jù)溢出。,否則會產(chǎn)生數(shù)據(jù)溢出。(2)由于實型變量是由有限的存儲單元組成的,因)由于實型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的,此能提供的有效數(shù)字總是有限的,在有效位以外在有效位以外的數(shù)字將被舍去的數(shù)字將被舍去,由此可能會產(chǎn)生一些誤差。由此可能會產(chǎn)生一些誤差。(3)字符型數(shù)據(jù)與整型數(shù)
18、據(jù)可通用,增加了程序設(shè))字符型數(shù)據(jù)與整型數(shù)據(jù)可通用,增加了程序設(shè)計的自由度,例如對字符作多種轉(zhuǎn)換就比較方便計的自由度,例如對字符作多種轉(zhuǎn)換就比較方便。但也需注意,。但也需注意,字符型數(shù)據(jù)與整型數(shù)據(jù)的通用是字符型數(shù)據(jù)與整型數(shù)據(jù)的通用是有條件的,即在有條件的,即在0255的范圍之內(nèi)才可以通用。的范圍之內(nèi)才可以通用?!纠?.3】計算字符計算字符B與整型數(shù)據(jù)與整型數(shù)據(jù)20的和。的和。#include stdio.hvoid main() char a; /* 說明說明a為字符型變量為字符型變量 */int b; /* 說明說明b為整型變量為整型變量 */a=B; /* 為為a賦字符常量賦字符常量B
19、*/b=a+20; /* 計算計算66+20并賦值給字符變量并賦值給字符變量b */printf(%c,%d,%c,%dn,a,a,b,b); /* 分別以字符型和整型兩種格式輸出分別以字符型和整型兩種格式輸出a、b */程序運行的輸出結(jié)果如下:程序運行的輸出結(jié)果如下:B,66,V,86l主要內(nèi)容:主要內(nèi)容:算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式賦值運算符和賦值表達式關(guān)系運算符和關(guān)系表達式關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式位運算符和位運算表達式位運算符和位運算表達式條件運算符和條件表達式條件運算符和條件表達式逗號運算符和逗號表達式逗號
20、運算符和逗號表達式其他運算符及其運算其他運算符及其運算l作用:作用:對運算對象完成規(guī)定的操作運算對運算對象完成規(guī)定的操作運算l類型:類型:按運算對象分:按運算對象分:l單目、雙目、三目單目、雙目、三目按功能分:按功能分:l算術(shù)、賦值、關(guān)系、邏輯算術(shù)、賦值、關(guān)系、邏輯l條件、逗號、位、其他條件、逗號、位、其他l優(yōu)先級優(yōu)先級指各種運算符號的運算優(yōu)先順序指各種運算符號的運算優(yōu)先順序例如:例如:算術(shù)運算優(yōu)先于關(guān)系運算算術(shù)運算優(yōu)先于關(guān)系運算 算術(shù)運算中先算術(shù)運算中先 * * / / 后后 + - + -l結(jié)合性結(jié)合性指運算符號和運算對象的結(jié)合方向指運算符號和運算對象的結(jié)合方向分為:分為:從左向右從左向右
21、( (左結(jié)合左結(jié)合) )和和從右向左從右向左( (右結(jié)合右結(jié)合) )例如:算術(shù)運算符為左結(jié)合例如:算術(shù)運算符為左結(jié)合 a-b+4a-b+4 賦值運算符為右結(jié)合賦值運算符為右結(jié)合 a= b = 5a= b = 5表表2.6 6 運算符優(yōu)先級和結(jié)合性運算符優(yōu)先級和結(jié)合性優(yōu)先級運算符名稱操作數(shù)個數(shù)結(jié)合規(guī)則1( ) -圓括號運算符數(shù)組下標(biāo)運算符指向結(jié)構(gòu)指針成員運算符取結(jié)構(gòu)成員運算符-(從左至右)2!+-(類型)*&sizeof邏輯非運算符按位取反運算符自增運算符自減運算符負(fù)號運算符強制類型轉(zhuǎn)換運算符取地址的內(nèi)容(指針運算)取地址運算符求字節(jié)數(shù)運算符1(單目運算符)4+-加法運算符減法運算符2(
22、雙目運算符)-5左移運算符右移運算符2(雙目運算符)-6=小于運算符小于等于運算符大于運算符大于等于運算符2(雙目運算符)-7=!=等于運算符不等于運算符2(雙目運算符)-優(yōu)先級運算符名稱操作數(shù)個數(shù)結(jié)合規(guī)則8&按位“與”運算符2(雙目運算符)-9按位“異或”運算符2(雙目運算符)-10|按位“或”運算符2(雙目運算符)-11&邏輯與運算符2(雙目運算符)-12|邏輯或運算符2(雙目運算符)-13?:條件運算符3(三目運算符)= =&= = |=賦值運算符2(雙目運算符)l什么是表達式什么是表達式表達式由運算符和操作數(shù)組成,操作數(shù)是運表達式由運算符和操作數(shù)組成,操作數(shù)是運
23、算符的操作對象,可以是常量、變量、函數(shù)算符的操作對象,可以是常量、變量、函數(shù)和表達式。和表達式。l表達式的書寫表達式的書寫C C語言的表達式采用線性形式書寫。語言的表達式采用線性形式書寫。l數(shù)學(xué)表達式數(shù)學(xué)表達式 應(yīng)該寫成應(yīng)該寫成1/6-i+j1/6-i+j* *j j* *j j* *j j* *j j* *j j。C C語言的表達式只能使用語言的表達式只能使用C C語言中合法的運算語言中合法的運算符和操作數(shù)符和操作數(shù)l2r2r應(yīng)該寫成應(yīng)該寫成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ōu)先級算術(shù)運算符的優(yōu)先級 ( ) + - + - * / % + - 同級 同級 同級 l沒有乘方運算符沒有乘方運算符,要計算,要計算a3要寫作要寫作 a*a*a 的連乘,的連乘,或用標(biāo)準(zhǔn)庫函數(shù)或用標(biāo)準(zhǔn)庫函數(shù) pow(a, 3)l “/”的運算對象可為各種類型數(shù)據(jù),但是當(dāng)進行的運算對象可為各種類型數(shù)據(jù),但是當(dāng)進行兩個整型數(shù)據(jù)相除時,運算結(jié)果也是整型數(shù)據(jù)兩個整型數(shù)據(jù)相除時,運算結(jié)果也是整型數(shù)據(jù) l“%”要求運算對象必須是整型數(shù)據(jù),功能是求要求運算對象必須是整型數(shù)據(jù),功能
25、是求兩數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號兩數(shù)相除的余數(shù),余數(shù)的符號與被除數(shù)的符號相同。相同。 l+ + -是單目運算符是單目運算符l有前綴和后綴兩種形式有前綴和后綴兩種形式 前綴形式前綴形式: : 先自增先自增( (自減自減) )再引用;再引用;后綴形式后綴形式: : 先引用再自增先引用再自增( (自減自減) );l功能:功能: 前綴形式前綴形式 + + a a 等價于等價于 a = a + 1 a = a + 1 - a a 等價于等價于 a = a a = a 1 1 后綴形式后綴形式 a + a + 等價于等價于 a = a + 1a = a + 1 a a - 等價于等價于 a =
26、 a a = a 1 1當(dāng)當(dāng) a5 時時 +a 表達式的值為表達式的值為 6,且且 a6 a+ 表達式的值為表達式的值為5 ,且,且 a6 b=+a 等價于等價于 a=a+1; b=a 表達式的值為表達式的值為6,且,且 a=6, b=6 b=a+ 等價于等價于 b=a; a=a+1 表達式的值為表達式的值為5,且,且 a=6, b=5 l自增、自減運算符只能用于整型變量,而不能用自增、自減運算符只能用于整型變量,而不能用于常量或表達式。于常量或表達式。 例如:例如: 5+、(a+2)+ 不合法。不合法。 l具有右結(jié)合性,結(jié)合方向為從右到左。具有右結(jié)合性,結(jié)合方向為從右到左。例如:例如: a+
27、 等價于等價于 -(a+) l C語言的表達式中語言的表達式中“+”,“-”運算符,如果使運算符,如果使用不當(dāng),很容易導(dǎo)致錯誤。用不當(dāng),很容易導(dǎo)致錯誤。l例如:例如:設(shè)設(shè)i=3,表達式,表達式k=(+i)+(+i)+(+i)”不同的不同的C編譯系統(tǒng)結(jié)合方式不一樣,所以不同的編譯系統(tǒng)結(jié)合方式不一樣,所以不同的編譯系統(tǒng)中,針對上述表達式得出的答案并不編譯系統(tǒng)中,針對上述表達式得出的答案并不一定同編程者的原意相同。一定同編程者的原意相同?!纠?.6】自增自減運算的應(yīng)用。自增自減運算的應(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);運行結(jié)果運行結(jié)果:i+=5, j-=5+i=7, -j=3i+=7, j-=3+i=9, -j=1i=9, j=1 l關(guān)系運算符關(guān)系運算符 ( (左結(jié)合)左結(jié)合) = = = != 較高較高 較低較低l關(guān)系表達式關(guān)系表達式用關(guān)系運算符將運算對象連接成的式子用關(guān)系運算符將運算對象連接成的式
29、子 例如:例如:12=c 等價于等價于 a = ( b=c ) 與與 (a=b)=c 不等價不等價l關(guān)系運算符優(yōu)先于賦值,低于算術(shù)關(guān)系運算符優(yōu)先于賦值,低于算術(shù)l關(guān)系運算的結(jié)果應(yīng)該是關(guān)系運算的結(jié)果應(yīng)該是邏輯值邏輯值。C C語言用數(shù)值用語言用數(shù)值用 1 1 表示表示邏輯真邏輯真, 0 0 表示表示邏輯假邏輯假例如:例如: 7575 的值是的值是 1 1,5757 的值是的值是 0 0 abab的值是的值是 0 0, aba= z l邏輯運算符的優(yōu)先級邏輯運算符的優(yōu)先級 和結(jié)合性:和結(jié)合性:!是單目運算符,是單目運算符,右結(jié)合右結(jié)合,高于算術(shù),高于算術(shù)& 和和 | 是雙目運算符,是雙目運算
30、符,左結(jié)合左結(jié)合,高于,高于賦值運算符,低于關(guān)系運算符賦值運算符,低于關(guān)系運算符l從左到右依次進行邏輯計算從左到右依次進行邏輯計算運算對象為運算對象為非非0 0表示表示邏輯真邏輯真運算對象為運算對象為 0 0 表示表示邏輯假邏輯假l邏輯運算的結(jié)果為邏輯運算的結(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運算按照運算按照從左至右從左至右的順序進行,一旦能夠的順序進行,一旦能夠確定邏輯表達式的值,就立即結(jié)束運算確定邏輯表達式的值,就立
31、即結(jié)束運算邏輯運算的短路性質(zhì)邏輯運算的短路性質(zhì)例如例如設(shè):設(shè):a=1,b=0,c=-2a & b & c(a+) | + b& -c為為 0,運算終止,表達式,運算終止,表達式值值為為 0為非為非0,運算終止,表達式值為,運算終止,表達式值為 1且且a為為2,b為為0,c為為-2 (b,c保持原值保持原值)l表示數(shù)學(xué)公式表示數(shù)學(xué)公式abc l判斷判斷a, b, c三條線段能否組成一個三角形三條線段能否組成一個三角形 la, b不同時為負(fù)不同時為負(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條件運算符:條件運算符:? :l條件表達式的一般形式條件表達式的一般形式 表達式表達式1 ? 表達式表達式2 : 表達式表達式3例如:例如:m=10 & b-20 ? a : b x=3+a5 ? 100 : 200 lC語言中唯一的語言中唯一的三目運算符三目運算符,要正確區(qū)分,要正確區(qū)分用用 ?和和 :分隔的表達式分隔的表達式l涉及條件運算符的優(yōu)先級與結(jié)合性涉及條件運算符的優(yōu)先級與結(jié)合性l條件運算符優(yōu)先級高于賦值、逗號運算符,條件運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符低于其他運算符 例如:例如: m=10 & b
33、-20 ? a : b x=3+a5 ? 100 : 200等價于:等價于:(m=10 & b-20) a b等價于:等價于:x= ( 3+a5 ) 100 200 )l逗號表達式的一般形式逗號表達式的一般形式 表達式表達式1,表達式,表達式2,表達式,表達式nl 逗號表達式的值逗號表達式的值從左向右,依次對表達式求值,最后得到從左向右,依次對表達式求值,最后得到表表達式達式n 的值就是逗號表達式的值的值就是逗號表達式的值例如:例如: a=5, a+, a* 3 表達式值為表達式值為 18,且,且a=6 t=1, t+5, t+ 表達式值為表達式值為 1,且,且t=2 x=(a=3*5
34、, a*4 ) 賦值表達式賦值表達式的值為的值為60,且,且x=60, a=15l賦值運算符賦值運算符( (右結(jié)合)右結(jié)合) = += - -= *= /= %= &= |= = = = l賦值表達式賦值表達式將將表達式的值表達式的值存入存入變量變量對應(yīng)的內(nèi)存單元中對應(yīng)的內(nèi)存單元中m=12b=(+a)-2 m%=3+n 等價于等價于 m=m%(3+n) x *= (x = 5)【例例2.8】 賦值運算應(yīng)用實例。賦值運算應(yīng)用實例。#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;/*等價于等價于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);運行結(jié)果為:運行結(jié)果為:i=1, j=1x=2.00, y=2.10i=3, x=6.10l位運算符的運算對象只能是位運算符的運算對象只能是整型數(shù)據(jù)整型數(shù)據(jù)或或字符型數(shù)據(jù)字符型數(shù)據(jù),不能是實型數(shù)據(jù)不能是實型數(shù)據(jù)l運算對象一律按二進制補碼參加運算,并運算對象一律按二進制補碼參加運算,并按位進行運按位進行運算算l位運算的結(jié)果是一個整型數(shù)據(jù)位運算的結(jié)果是一
36、個整型數(shù)據(jù)低于單目、算術(shù)運算符,高于其低于單目、算術(shù)運算符,高于其他運算符他運算符低于單目、算術(shù)和關(guān)系運算符,高低于單目、算術(shù)和關(guān)系運算符,高于其他運算符于其他運算符(1)位邏輯運算)位邏輯運算按位取反運算按位取反運算按位取反運算符:按位取反運算符:按位取反運算用來對一個二進制數(shù)按位求反,即按位取反運算用來對一個二進制數(shù)按位求反,即“1”變?yōu)樽優(yōu)椤?”,“0”變?yōu)樽優(yōu)椤?運算常用于產(chǎn)生一些特殊的數(shù)。運算常用于產(chǎn)生一些特殊的數(shù)。運算還常用于加密子程序。運算還常用于加密子程序。例如:例如:初始字節(jié)內(nèi)容初始字節(jié)內(nèi)容 00000101取反后取反后 11111010按位與運算按位與運算 按位與運算符:按
37、位與運算符:&按位與運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)位都按位與運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)位都是是1時,則該位的運算結(jié)果為時,則該位的運算結(jié)果為1,否則為,否則為“0“。例如:例如:0 x29&0 x370 x29&0 x37的運算的運算 0 x29 0 x29: 00101001 00101001 0 x37 0 x37: 00110111 00110111與運算結(jié)果為:與運算結(jié)果為:00100001,00100001,即即0 x210 x21。按位或運算按位或運算按位或運算符:按位或運算符:按位或運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)位都按位或運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)
38、位都是是0 0時,則該位的運算結(jié)果為時,則該位的運算結(jié)果為0 0,否則為,否則為1 1。例如:例如:0 x29|0 x370 x29|0 x37的運算的運算0 x290 x29: 00101001 001010010 x370 x37: 00110111 00110111按位或結(jié)果:按位或結(jié)果:0011111100111111,即等于,即等于0 x3f0 x3f。按位異或運算按位異或運算按位異或運算符:按位異或運算符:按位異或運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)位按位異或運算的規(guī)則是當(dāng)兩個操作數(shù)的對應(yīng)位相同時,則該位的運算結(jié)果為相同時,則該位的運算結(jié)果為0,否則為,否則為1。例如:例如:0 x290 x290 x370 x37的運算的運算0 x290 x29: 00101001 001010010 x370 x37: 00110111 00110111按位異或結(jié)果:按位異或結(jié)果:0001111000011110,即等于,即等于0 x1e0 x1e移位
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國脫水蔬菜項目創(chuàng)業(yè)計劃書
- 中國黑色家電電商項目創(chuàng)業(yè)計劃書
- 中國計算器項目創(chuàng)業(yè)計劃書
- 中國藍莓深加工項目創(chuàng)業(yè)計劃書
- 中國金融軟件項目創(chuàng)業(yè)計劃書
- 中國計算機硬件維修項目創(chuàng)業(yè)計劃書
- 中國骨粉項目創(chuàng)業(yè)計劃書
- 2025二手房購房定金合同范本
- 中國動態(tài)電壓恢復(fù)器DVR項目創(chuàng)業(yè)計劃書
- 中國電子商務(wù)服務(wù)項目創(chuàng)業(yè)計劃書
- 2025年高考真題-化學(xué)(黑吉遼卷) 含答案(黑龍江、吉林、遼寧、內(nèi)蒙古)
- 2025年新高考1卷(新課標(biāo)Ⅰ卷)英語試卷
- 語文 《“蛟龍”探?!氛n件-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 2025年企業(yè)管理者能力測評試卷及答案
- 車輛維修包干協(xié)議書
- 記賬實操-天然氣公司的全盤會計賬務(wù)處理實例
- 中學(xué)生英語詞匯表3500(全)
- 2025年檔案法制知識競賽題庫(含答案)
- 2025年福建省中考生物沖刺卷模擬檢測卷(含答案)
- 【8地 會考】2022-2024年安徽省初中(八年級)中考初二會考地理試卷(3年真題)
- 安徽省宣城市2023-2024學(xué)年四年級下學(xué)期期末數(shù)學(xué)考試卷
評論
0/150
提交評論