第03章 運算符和表達式_第1頁
第03章 運算符和表達式_第2頁
第03章 運算符和表達式_第3頁
第03章 運算符和表達式_第4頁
第03章 運算符和表達式_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1第三章第三章 數(shù)據(jù)類型、運算符與表達式數(shù)據(jù)類型、運算符與表達式lC的數(shù)據(jù)類型的數(shù)據(jù)類型l常量與變量常量與變量l整型數(shù)據(jù)整型數(shù)據(jù)l實型數(shù)據(jù)實型數(shù)據(jù)l字符型數(shù)據(jù)字符型數(shù)據(jù)l變量賦初值變量賦初值l各類數(shù)據(jù)型數(shù)據(jù)各類數(shù)據(jù)型數(shù)據(jù)間的混合運算間的混合運算l算術運算符和算術表達式算術運算符和算術表達式l賦值運算符和賦值表達式賦值運算符和賦值表達式l逗號運算符和逗號表達式逗號運算符和逗號表達式l關系運算符和關系表達式關系運算符和關系表達式l邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式l位運算符和位運算位運算符和位運算23.0 預備知識預備知識l計算機中數(shù)的表示及進制轉換計算機中數(shù)的表示及進制轉換 數(shù)碼、基與

2、權數(shù)碼、基與權數(shù)碼:表示數(shù)的符號數(shù)碼:表示數(shù)的符號基:數(shù)碼的個數(shù)基:數(shù)碼的個數(shù)權:每一位所具有的值權:每一位所具有的值 數(shù)制數(shù)制: :二進制、八進制、十進制、十六進制二進制、八進制、十進制、十六進制 各種進制之間的轉換各種進制之間的轉換非十進制非十進制 (二、八、十六進制二、八、十六進制) 轉換成十進制轉換成十進制方法:方法:按權相加按權相加十進制轉換成非十進制十進制轉換成非十進制 (二、八、十六進制二、八、十六進制)方法:方法:除基反序取余除基反序取余( (整數(shù)部分整數(shù)部分) )3二進制與八進制之間的轉換二進制與八進制之間的轉換二進制轉換成八進制:從右向左,每二進制轉換成八進制:從右向左,每

3、3位一組(不足位一組(不足3位左補位左補0),轉換成八進制),轉換成八進制八進制轉換成二進制:用八進制轉換成二進制:用3位二進制數(shù)代替每一位八位二進制數(shù)代替每一位八進制數(shù)進制數(shù)二進制與十六進制之間的轉換二進制與十六進制之間的轉換二進制轉換成十六進制:從右向左,每二進制轉換成十六進制:從右向左,每4位一組(不位一組(不足足4位左補位左補0),轉換成十六進制),轉換成十六進制十六進制轉換成二進制:用十六進制轉換成二進制:用4位二進制數(shù)代替每一位位二進制數(shù)代替每一位十六進制數(shù)十六進制數(shù)4l字節(jié)和位字節(jié)和位內存以字節(jié)為單元組成內存以字節(jié)為單元組成每個字節(jié)有一個地址每個字節(jié)有一個地址一個字節(jié)一般由一個字

4、節(jié)一般由8個二進制位組成個二進制位組成每個二進位的值是每個二進位的值是0或或1l數(shù)值的表示方法數(shù)值的表示方法原碼、反碼和補碼原碼、反碼和補碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:反碼:正數(shù):反碼與原碼相同正數(shù):反碼與原碼相同負數(shù):符號位為負數(shù):符號位為1,其余位對原碼取反,其余位對原碼取反補碼:補碼:正數(shù):原碼、反碼、補碼相同正數(shù):原碼、反碼、補碼相同負數(shù):最高位為負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加,其余位為原碼取反,再對整個數(shù)加15原碼原碼反碼反碼補碼補碼數(shù)的范圍數(shù)的范圍0111111111111111(-127+

5、127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字節(jié)表示數(shù))(用一字節(jié)表示數(shù))63.1 C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型void整型整型實型實型字符型字符型char單精度型單精度型float數(shù)組型數(shù)組型雙精度型雙精度型double結構體類型結構體類型struct共用體類型共用體類型union枚舉類型枚舉類型enum有符號有符號無符號無符號基本整型基本整型int短整型短整型short長整型長整型long基本整型基本整型unsigned int短整型短整型

6、unsigned short長整型長整型unsigned long自定義類型自定義類型typedef數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進行的操作73.2 常量與變量常量與變量一、標識符一、標識符 1、定義:可用來標識、定義:可用來標識變量名、符號常量名、函數(shù)名、數(shù)組變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名名、類型名、文件名的有效字符序列。的有效字符序列。 2、命名規(guī)則:、命名規(guī)則: 由由字母、數(shù)字、下劃線字母、數(shù)字、下劃線組成組成 以字母或下劃線打頭以字母或下劃線打頭 區(qū)分大小寫區(qū)分大小寫 命名盡量做到命名盡量做到“見名知義見名知義” Turbo C允

7、許標識符最大長度允許標識符最大長度32個字符,建意不超過個字符,建意不超過8個字符個字符 不允許和不允許和關鍵字關鍵字相同相同8 二、常量二、常量 1、常量:在程序運行過程中,值不變的量。、常量:在程序運行過程中,值不變的量。 2、直接常量直接常量:即常數(shù)。如:即常數(shù)。如 35.1、1、2、35、a??梢苑譃閷嵭汀⒄?、字符型??梢苑譃閷嵭?、整型、字符型。 3、符號常量符號常量:在一個程序中指定用一個符號代表一:在一個程序中指定用一個符號代表一個常量。個常量。 如在程序的開頭有如下定義:如在程序的開頭有如下定義: # define PI 3.1415926 則在整個程序中可用則在整個程序中可用

8、“PI”代替代替3.1415926進行進行運算運算9 例例1: #define PRICE 30 main() int num, total; num = 10; total = num * PRICE; printf(total = %d, total); 102.3變量變量概念:其值可以改變的量概念:其值可以改變的量變量名變量名與與變量值變量值、變量地址變量地址變量定義的一般格式:變量定義的一般格式: 數(shù)據(jù)類型數(shù)據(jù)類型 變量變量1,變量,變量2,變量,變量n;變量初始化變量初始化:定義時賦初值定義時賦初值 例例: int a,b,c; float data;決定分配字節(jié)數(shù)決定分配字節(jié)數(shù)和數(shù)

9、的表示范圍和數(shù)的表示范圍合法標識符合法標識符例例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;變量的使用:變量的使用:先定義,后使用先定義,后使用變量定義位置:變量定義位置:一般一般放在函數(shù)開頭放在函數(shù)開頭main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義變量定義可執(zhí)行語句可執(zhí)行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; pr

10、intf(“data=%fn”,data);語語言言程程序序設設計計 第第二二章章數(shù)數(shù)據(jù)據(jù)描描述述C12a變量名變量名( 符號地址符號地址 )變量值變量值存儲單元存儲單元( 物理地址物理地址 )Eg:Int a;11 | &a2500H| 2501H|- 1250 - a=1250 &b2502H| 2503H|- - 2504H|- 123.67 - b=123.67 2505H|- - 2506H| 變量名、變量值、變量地址間的關系變量名、變量值、變量地址間的關系地址、變量名和變量值區(qū)別舉例如:地址、變量名和變量值區(qū)別舉例如: short short intint a=12

11、50; float b=123.67; a=1250; float b=123.67;1250a變量名變量名( 符號地址符號地址 )變量值變量值存儲單元存儲單元( 物理地址物理地址 )變量的屬性:變量的屬性:12 一、整型常量:有三種表示形式一、整型常量:有三種表示形式 1、十進數(shù)形式:、十進數(shù)形式:1、98、345 2、八進數(shù)形式:、八進數(shù)形式:以以0 開頭的數(shù)字開頭的數(shù)字。01、076 3、十六進數(shù)形式:、十六進數(shù)形式:以以0 x開頭的數(shù)字開頭的數(shù)字。0 x3F、0 x7653.3 整型數(shù)據(jù)整型數(shù)據(jù)13 例例 整數(shù)的不同進制數(shù)表示及轉換。整數(shù)的不同進制數(shù)表示及轉換。main( )main(

12、 ) printf(printf( %d%d %x %on,125,125,125); %x %on,125,125,125); printf(%dprintf(%d %x %on,045,045,045); %x %on,045,045,045); printf(%dprintf(%d %x %on,0 x32,0 x32,0 x32); %x %on,0 x32,0 x32,0 x32); 執(zhí)行結果執(zhí)行結果: : 125 7d 175 125 7d 175 37 25 45 37 25 45 50 32 62 50 32 6214二、整型變量二、整型變量:(有符號和無符號有符號和無符號)類

13、型類型 有符號有符號 無符號無符號 基本型(簡稱整型)基本型(簡稱整型) signed int unsigned int 短整型短整型 short或或short int unsigned short 長整型長整型 long或或long int unsigned long 說明:說明:無符號型無符號型加加unsigned修飾符表示,只表示正數(shù),無修飾符表示,只表示正數(shù),無符號位。符號位。 各類型數(shù)據(jù)所占寬度和范圍見書各類型數(shù)據(jù)所占寬度和范圍見書43頁表頁表3.115 三、整型變量的定義:三、整型變量的定義: 1、變量的定義一般在函數(shù)的開頭部分;、變量的定義一般在函數(shù)的開頭部分; 2、一條定義語句

14、可定義多個同種類型的變量,各變量之、一條定義語句可定義多個同種類型的變量,各變量之間用間用逗號分隔逗號分隔。 3、變量類型符與其后所定義變量之間用變量類型符與其后所定義變量之間用空格分隔空格分隔。 如如: int a; unsigned short b,c; long d;16一、實型常量:實數(shù)又稱為浮點數(shù),有兩種表示形式一、實型常量:實數(shù)又稱為浮點數(shù),有兩種表示形式 1 1、十進制數(shù)形式十進制數(shù)形式:由數(shù)字和小數(shù)點組成(必須有:由數(shù)字和小數(shù)點組成(必須有小數(shù)點)小數(shù)點) 如如:43.243.2、 89.89.、 .86.86 2 2、指數(shù)形式指數(shù)形式:即科學計數(shù)法。如:即科學計數(shù)法。如:45

15、45e2e2相當于相當于454510102 2、3434e5e5相當于相當于343410105 5。字母字母e e前必須有數(shù)字,前必須有數(shù)字,字母字母e e后必須是整數(shù)。后必須是整數(shù)。v “ “規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式”:在指數(shù)形式中,小數(shù)部分:在指數(shù)形式中,小數(shù)部分中的小數(shù)點前中的小數(shù)點前有且只有有且只有一位非零數(shù)字。一位非零數(shù)字。3.4 實型數(shù)據(jù)實型數(shù)據(jù)17二、實型變量二、實型變量 (分為三種類型分為三種類型) 1、單精度型、單精度型(float): 字節(jié)數(shù):字節(jié)數(shù):4,有效位,有效位 7 2、雙精度型、雙精度型(double):字節(jié)數(shù):字節(jié)數(shù):8,有效位,有效位 15 3、長雙精度型

16、、長雙精度型(long double):字節(jié)數(shù):字節(jié)數(shù):8,有效位,有效位 18 v 實型常量不分單、雙精度??扇我赓x值,但有效數(shù)位不同。實型常量不分單、雙精度??扇我赓x值,但有效數(shù)位不同。 三、實型數(shù)據(jù)的舍入誤差三、實型數(shù)據(jù)的舍入誤差四、存儲方式:按指數(shù)形式四、存儲方式:按指數(shù)形式,eg7.45623在內存中的存放形在內存中的存放形式式+(數(shù)符)(數(shù)符).745623+(指數(shù)數(shù)符)(指數(shù)數(shù)符) 1183.5 字符型數(shù)據(jù)字符型數(shù)據(jù)一、字符型常量:用一對一、字符型常量:用一對單引號單引號括起來的括起來的一一個字符。個字符。 二、字符常量的分類:二、字符常量的分類: 1、普通字符普通字符: 如:如

17、:1、a、A、* 2、轉義字符轉義字符: 也稱控制字符,如也稱控制字符,如n。 說明:說明: 用反斜杠開頭后面跟一個字母代表一個控制字符。用反斜杠開頭后面跟一個字母代表一個控制字符。 反斜杠后面的字符失去原來的含義反斜杠后面的字符失去原來的含義19字符形式字符形式 功能功能 n 回車回車換行符換行符 t 橫向跳格橫向跳格:跳到下一個輸出區(qū)(每一輸出區(qū)為:跳到下一個輸出區(qū)(每一輸出區(qū)為8 個字符位置)個字符位置) b 退格退格 r 回車不換行回車不換行(回到本行起始字符位置)(回到本行起始字符位置) f 走紙換頁走紙換頁 反斜杠字符反斜杠字符 單引號單引號(撇號撇號) ddd 13位八進制數(shù)所代

18、表的字符。如位八進制數(shù)所代表的字符。如101表示表示A xhh 12位十六進制數(shù)所代表的字符。如位十六進制數(shù)所代表的字符。如x40表示表示A常用轉義字符形式及功能見書常用轉義字符形式及功能見書P4020 3、字符常量定義定義: :用用單引號單引號括起來的單個括起來的單個普通字符普通字符或或轉義字符轉義字符. 字符常量的字符常量的值值:該字符的:該字符的ASCIIASCII碼碼值值例:A-101-x41-65如如 AA6565, aa9797, 0048 , n48 , n1010如如 a A ? n 101轉義字符轉義字符: :反斜線后面跟一個字符或一個代碼值表示反斜線后面跟一個字符或一個代碼

19、值表示例例 轉義字符舉例轉義字符舉例(ch2_001.c,ch2_004.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);運行結果:運行結果:(屏幕顯示屏幕顯示)A B CIsay:”How are you?”C ProgramTurbo C例例 main() printf(“Yb=n”); 運行結果:運行結果:屏幕顯示:屏幕顯示:=打印機輸出:打印機輸出:字符常量、整型常量可通用;字符常量、整型常量可通用;main( ) char c1,c2; /*定

20、義兩個字符型變量定義兩個字符型變量*/ c1=a; c2=b; /*賦字符型常量賦字符型常量*/ c1=c1-32; c2=c2-32; /*分別減去分別減去32*/ printf(“%c %d”,c1,c2); /*輸出兩個字符型數(shù)據(jù)輸出兩個字符型數(shù)據(jù)*/輸出:輸出:A 6621一、賦值:向變量所代表的存儲單元傳送數(shù)據(jù)的操作,用一、賦值:向變量所代表的存儲單元傳送數(shù)據(jù)的操作,用“=”表示表示二、賦值的一般形式:二、賦值的一般形式:變量變量=表達式表達式;三、可以先定義變量,后賦值;也可以在定義變量時直接賦值三、可以先定義變量,后賦值;也可以在定義變量時直接賦值四、對幾個變量同時賦值:四、對幾

21、個變量同時賦值: 1、int a, b, c=5; 2、int a=3,b=3,c=3; 3、int a; a=3; 4、int a, b,c; c=5;3.6 變量賦初值變量賦初值2、int a=b=c=3;223.7 各類型數(shù)值數(shù)據(jù)間的混合運算各類型數(shù)值數(shù)據(jù)間的混合運算一、轉換原因:不同類型之間進行運算,必須先轉換為同一類型一、轉換原因:不同類型之間進行運算,必須先轉換為同一類型二、轉換的類型:實型、整型、字符型二、轉換的類型:實型、整型、字符型三、轉換規(guī)則:見下頁三、轉換規(guī)則:見下頁23doublefloatlongunsignedintchar,short低低高高說明說明:必定的轉換必

22、定的轉換運算對象類型不同時轉換運算對象類型不同時轉換例例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例例 int i; float f; double d; long l;243.8 算術運算符和算術表達式算術運算符和算術表達式(一)按功能劃分:(一)按功能劃分: 1、算術運算符:、算術運算符: +、-、*、/、% 2、關系運算符:、關系

23、運算符: 、=、 =、 != 3、邏輯運算符:、邏輯運算符: !、& 、| 4、位運算符:、位運算符: 、|、& 5、賦值運算符:、賦值運算符: =、+=、-=、*=、/= 6、條件運算符:、條件運算符: ? , : 7、逗號運算符:、逗號運算符: , 8、指針運算符:、指針運算符: *、& 9、求字節(jié)數(shù)運算符:、求字節(jié)數(shù)運算符: sizeof 10、強制類型轉換運算符:強制類型轉換運算符: (類型名類型名) 11、分量運算符:、分量運算符: 、 - 12、下標運算符:、下標運算符: 13、其它:、其它:函數(shù)運算符函數(shù)運算符一、一、C運算符分類運算符分類(見附錄見附錄D

24、,P378)25(二)按所需操作數(shù)個數(shù)劃分(二)按所需操作數(shù)個數(shù)劃分 1、單目運算符、單目運算符 2、雙目運算符、雙目運算符 3、三目運算符、三目運算符 學習運算符應注意:學習運算符應注意:運算符功能運算符功能與運算量關系與運算量關系要求運算量要求運算量個數(shù)個數(shù)要求運算量要求運算量類型類型運算符優(yōu)先級別運算符優(yōu)先級別結合方向(解釋見下頁)結合方向(解釋見下頁)結果的類型結果的類型26運算符的優(yōu)先級與結合性運算符的優(yōu)先級與結合性 語言規(guī)定了運算符的優(yōu)先級和結合性。語言規(guī)定了運算符的優(yōu)先級和結合性。結合性結合性:當一個操作數(shù)兩側的運算符具有相同的優(yōu)先級時,當一個操作數(shù)兩側的運算符具有相同的優(yōu)先級時

25、,該操作數(shù)是先與左邊的運算符結合,還是先與右邊的運算符該操作數(shù)是先與左邊的運算符結合,還是先與右邊的運算符結合。結合。 自左至右的結合方向,稱為自左至右的結合方向,稱為左結合左結合性。反之,稱為性。反之,稱為右結右結合合性性。 除除單目單目運算符、運算符、賦值賦值運算符和運算符和條件條件運算符是運算符是右結合性右結合性外,外,其它運算符都是其它運算符都是左結合性左結合性。27二、算術運算符和表達式(書二、算術運算符和表達式(書P53P53)1 1、基本算術運算符:、基本算術運算符: + + - - * * / % / %結合方向:從左向右結合方向:從左向右優(yōu)先級:優(yōu)先級: - - + +(單目

26、)(單目) - -* * / % / % - - + -+ - (2) (3) (4)(2) (3) (4)說明:說明:“- -”和和“+ +”可為可為單目單目運算符時運算符時, ,右結合性右結合性兩整數(shù)相除,結果為整數(shù)兩整數(shù)相除,結果為整數(shù)% %要求兩側均為整型數(shù)據(jù)要求兩側均為整型數(shù)據(jù)例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例例 5/2 = 2 -5/2.0 = -2.5例例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ( )282 2、強制類型轉換(顯式轉換)、強制類型轉換(顯式轉換)一般形式:

27、一般形式:(類型名)(類型名)(表達式)(表達式)例例 ( (int)(x+yint)(x+y) ) ( (int)x+yint)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 說明:強制轉換得到所需類型的中間變量,說明:強制轉換得到所需類型的中間變量,原變原變量類型不變量類型不變 29例例: main( ) float x; int i; x=3.6; i=(int) x; printf(“x=%f,i=%d”,x, i);運行結果如下:運行結果如下:x=3.600000, i=3精度損失問題精度損失問題303 3、自增、自減運算符、自增、

28、自減運算符+ -+ -作用:使變量值加作用:使變量值加1 1或減或減1 1,常用于,常用于循環(huán)控制變量加(或減)循環(huán)控制變量加(或減)種類:種類:l前置前置 +i, -i (+i, -i (先執(zhí)行先執(zhí)行i i+1+1或或i-1i-1,再使用再使用i i值)值)l后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再執(zhí)行再執(zhí)行i i+1+1或或i-1i-1)例例 j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; j=3; printf(“%d”,+jprintf(“%d”,+j); ); j=3; j=3; printf(“%d”,j

29、printf(“%d”,j+); +); a=3;b=5;c=(+a) a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+) a=3;b=5;c=(a+)* *b; b; /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4313 3、自增、自減運算符、自增、自減運算符+ -+ -作用:使變量值加作用:使變量值加1 1或減或減1 1種類:種類:l前置前置 +i, -i (+i, -i (先執(zhí)行先執(zhí)行i i+1+1或或i-1i-1,再使用再使用i i值)值)l后置后置 i+,

30、i- (i+,i- (先使用先使用i i值值, ,再執(zhí)行再執(zhí)行i i+1+1或或i-1i-1)說明:說明:l+ - + - 不能用于常量和表達式不能用于常量和表達式, ,如如5+5+,( (a+b)+a+b)+l+ -+ -結合方向:結合方向: 自右向左自右向左l優(yōu)先級:優(yōu)先級:- - - + - - + - -* * / % -+ - / % -+ - (2) (3) (4)(2) (3) (4)例例 - -i+ i+ -(i+) -(i+) i=3; i=3; printf(“%d”,-iprintf(“%d”,-i+); +); /-3 /-3 例例 - -i+i+ i=3; i=3;

31、printf(“%d”,-iprintf(“%d”,-i+); +); 32 (1) 避免連續(xù)使用一變量進行自增或自減運算避免連續(xù)使用一變量進行自增或自減運算 如如:i = 3; k = (i+) + (i+) + (i+) k值等于值等于9。 k = (+i) + (+i) + (+i) k值等于值等于18。 (2) 出現(xiàn)多個運算符時,編譯器在處理時盡可能多的出現(xiàn)多個運算符時,編譯器在處理時盡可能多的(從從左到右左到右)將若干個字符組合成一個運算符將若干個字符組合成一個運算符。 如如: i+j; (i+)+j i+(+j) (3) Turbo C中,調用函數(shù)時,實際參數(shù)的處理順序是中,調用函

32、數(shù)時,實際參數(shù)的處理順序是從右到左從右到左。 如如:i = 3; printf(“%d,%d”,i,i+); 輸出結果:輸出結果:4,3 VC+6.0里結果是:里結果是:3,3注意:注意:333.93.9賦值運算符和表達式賦值運算符和表達式 簡單賦值運算符簡單賦值運算符符號:符號: = =格式:格式: 變量標識符變量標識符= =表達式表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量 復合賦值運算符復合賦值運算符種類種類:+= -= += -= * *= /= %= /= %= = = = &= = |= &= = |=含義:含義:

33、exp1 op= exp2exp1 op= exp2 exp1 = exp1 op exp2exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3;a=3; d= d=funcfunc();(); c=d+2; c=d+2;34說明說明: :結合方向:結合方向:自右向左自右向左 優(yōu)先級優(yōu)先級: 14左側必須是變量,不能是常量或表達式左側必須是變量,不能是常量或表達式 賦值表達式的值與變量值相等賦值表達式的值與變量值相等,且可嵌套且可嵌套賦值轉換賦值轉換規(guī)則規(guī)則: :使賦值號右邊表達式值使賦值號右邊表達式值自動自動轉換成其左轉換成其左

34、邊變量的類型邊變量的類型例例 3=x-23=x-2* *y;y; a+b=3; a+b=3;例例 float f; int i; i=10; f=i;則則 f=10.0例例 int i; i=2.56; /結果結果i=2;例例: a=b=c=5: a=b=c=5 a=(b=5) a=(b=5) a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) a=(b=10)/(c=2)/表達式值為5,a,b,c值為5/ b=5;a=5/ b=5;a=5/表達式值11,c=6,a=11/表達式值10,a=10,b=4,c=6/表達式值

35、5,a=5,b=10,c=235說明說明: :結合方向:結合方向:自右向左自右向左 優(yōu)先級優(yōu)先級: 12左側必須是變量,不能是常量或表達式左側必須是變量,不能是常量或表達式 賦值表達式的值與變量值相等賦值表達式的值與變量值相等,且可嵌套且可嵌套賦值轉換賦值轉換規(guī)則規(guī)則: :使賦值號右邊表達式值使賦值號右邊表達式值自動自動轉換成其左轉換成其左邊變量的類型邊變量的類型例例: : a=12; a=12; a+=a-=a a+=a-=a* *a a例例: : intint a=2; a=2; a%=4-1; a%=4-1; a+=a a+=a* *=a-=a=a-=a* *=3; =3; /a=-26

36、4 /a=-264 等價于等價于a=a+(a=a-(aa=a+(a=a-(a* *a)a)/a=0 /a=0 等價于等價于a=a+(a=aa=a+(a=a* *(a=a-(a=a(a=a-(a=a* *3)3)36左(變量)左(變量)右(表達式)右(表達式)結果結果int float、double舍棄小數(shù)(截斷)舍棄小數(shù)(截斷) float、double int 值不變值不變 int(2字節(jié))字節(jié)) unsigned char賦給賦給int的低的低8位位, 高高8位補位補0 signed char賦給賦給int的低的低8位位,高高8位補符號位補符號charint 、short 、long取低取

37、低8位位long int int符號擴展符號擴展intlong int截斷(取低截斷(取低16位)位)long int unsigned int 高位補高位補0l賦值時的類型轉換賦值時的類型轉換 當賦值運算符兩側的類型不同時,在賦值前要進行類當賦值運算符兩側的類型不同時,在賦值前要進行類型轉換。轉換規(guī)則如下表:型轉換。轉換規(guī)則如下表:373.10逗號運算符和表達式(補充)逗號運算符和表達式(補充)形式:形式:表達式表達式1,表達式表達式2,表達式表達式n結合性結合性:從左向右從左向右優(yōu)先級優(yōu)先級: 15逗號表達式逗號表達式的值:等于表達式的值:等于表達式n的值的值用途:用途:常用于循環(huán)常用于循

38、環(huán)for語句中語句中例例 x=(a=3,6*3) x=a=3,6*a例例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /賦值表達式,表達式值賦值表達式,表達式值18,x=18/逗號表達式逗號表達式,表達式值表達式值18,x=3/1,2,3/3,2,3逗號作為分隔逗號作為分隔符符38 逗號運算符和表達式逗號運算符和表達式形式:形式:表達式表達式1,表達式表達式2,表達式表達式n結合性結合性:從左向右從左向右優(yōu)先級優(yōu)先級: 15逗號表達式逗號表達式的值:等于表達式的值:等于表達式n的值的值用途:用途:

39、常用于循環(huán)常用于循環(huán)for語句中語句中例例:#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);運行結果:運行結果:x=3393.11關系運算符和表達式(書關系運算符和表達式(書P91)關系運算符關系運算符 種類種類: = != 結合方向:自左向右結合方向:自左向右 優(yōu)先級別:優(yōu)先級別:=!=優(yōu)先級優(yōu)先級6(高)(高)優(yōu)先級優(yōu)先級7(低)(低)例例 ca+b /c(a+b)ca+b /c(a+b) ab!=c /(ab)!=c ab!=c /(ab)!=c a=bc /a=(bc) a=bc /a=(bc /

40、a=(bc) a=bc /a=(bc) 關系表達式的值:是邏輯值關系表達式的值:是邏輯值“真真”或或“假假”,用,用1和和0表表示示例例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達式值表達式值1/表達式值表達式值1/表達式值表達式值0/d=1/f=0低于算術運算符,但低于算術運算符,但高于賦值運算符。高于賦值運算符。40 關系運算注意:關系運算注意:例例 若若a=0; b=0.5; x=0.3; 則則 a=x278在在C中是允許的,中是允許的, 值為值為0例例 int i=1, j=7,a; a=i+(j%4!=0); 則則a=2例例 a0 結果為

41、結果為 A100 結果為結果為1041ab!a!ba&ba|b真真假假真真假假假假假假真真真真3.12邏輯運算符和表達式(書邏輯運算符和表達式(書P92) 邏輯運算符邏輯運算符 種類:種類: ! & | 邏輯運算真值表邏輯運算真值表C C語言中語言中, ,運算量運算量: : 0 0表示表示“假假”, 非非0 0表示表示“真真”, , 運算結果運算結果: : 0 0表示表示“假假”, 1 1表示表示“真真”, ,真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真42例例 a=x & xb&xy a=b|x=y !a|abl優(yōu)先級:優(yōu)先級:l結合方向:結合方向:! :從右向左從右向左& :從左向右從左向右| :從左向右從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論