




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 第第2 2章章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型、運(yùn)算符與表達(dá)式2.1.1 C2.1.1 C語言的數(shù)據(jù)類型簡介語言的數(shù)據(jù)類型簡介1 1、基本類型、基本類型分為整型、實(shí)型(又稱浮點(diǎn)型)、字符型和枚舉型四種。分為整型、實(shí)型(又稱浮點(diǎn)型)、字符型和枚舉型四種?;緮?shù)據(jù)類型的值不能再分解成其他類型?;緮?shù)據(jù)類型的值不能再分解成其他類型。 整形整形: int long int unsigned int int long int unsigned int 實(shí)型(浮點(diǎn)型)實(shí)型(浮點(diǎn)型):單精度實(shí)型:單精度實(shí)型float; float; 雙精度實(shí)型雙精度實(shí)型doubledouble 字符型字符型:CharC
2、har 枚舉型枚舉型: enumenum2 2、構(gòu)造類型、構(gòu)造類型分為:分為: 數(shù)組類型、結(jié)構(gòu)類型、共同體類型三種。數(shù)組類型、結(jié)構(gòu)類型、共同體類型三種。一個構(gòu)造類型的值可以分解成若干個一個構(gòu)造類型的值可以分解成若干個“元素元素”,“元素元素”可可以是基本數(shù)據(jù)類型或一個構(gòu)造類型。以是基本數(shù)據(jù)類型或一個構(gòu)造類型。如:如:int a10int a10;表示整形數(shù)組;表示整形數(shù)組 a a 包含包含1010個元素個元素a0a9,a0a9,每個元素都是基本數(shù)據(jù)類型每個元素都是基本數(shù)據(jù)類型-整形。整形。3 3、指針類型、指針類型 變量在內(nèi)存中的存放的地址。在第變量在內(nèi)存中的存放的地址。在第1010章中介紹。
3、章中介紹。4 4、空類型、空類型 不向調(diào)用者返回函數(shù)值或返回函數(shù)值為空。不向調(diào)用者返回函數(shù)值或返回函數(shù)值為空。例如:例如: void sub( )void sub( )C C語言中的數(shù)據(jù),其表現(xiàn)形式:常量和變量,它語言中的數(shù)據(jù),其表現(xiàn)形式:常量和變量,它 們分別屬于上述這些類型。們分別屬于上述這些類型。 本章將只介紹基本類型中的本章將只介紹基本類型中的整型、實(shí)型和字符型整型、實(shí)型和字符型 三種數(shù)據(jù)。三種數(shù)據(jù)。 2.1.2 2.1.2 常量和變量常量和變量對于基本數(shù)據(jù)類型,視其值是否可以改變又可以分為常量對于基本數(shù)據(jù)類型,視其值是否可以改變又可以分為常量和變量。和變量。一、常量一、常量1 1、常
4、量的概念:、常量的概念: 在程序運(yùn)行過程中,其值不能被改變的量稱為常量(常數(shù))。在程序運(yùn)行過程中,其值不能被改變的量稱為常量(常數(shù))。2 2、常量的分類、常量的分類 (1 1)直接常量:)直接常量: 整型常量:整型常量:1 1、-5-5、0 0 實(shí)型常量:實(shí)型常量:4.5 4.5 、 -1.23-1.23、3.143.14 字符常量:字符常量:a a 、 1 1、單個字符,可用其、單個字符,可用其ASCIIASCII碼值參碼值參 加運(yùn)算。加運(yùn)算。 字符串常量:字符串常量:“abcdefgabcdefg”、 “computercomputer”等等 。“a a” 與與 a a 是有區(qū)別的。是有區(qū)
5、別的。(2 2)符號常量)符號常量: 用用標(biāo)識符標(biāo)識符來表示的一種常量。一般形式來表示的一種常量。一般形式 #define #define 標(biāo)識符標(biāo)識符 常量常量# define 是預(yù)處理命令,可稱為宏定義命令。功能是把是預(yù)處理命令,可稱為宏定義命令。功能是把標(biāo)識符定義為其后的常量值。標(biāo)識符定義為其后的常量值。標(biāo)識符一般用大寫字母標(biāo)識符一般用大寫字母如:例如:例2-4中的中的 #define PI 3.14 /*定義了一個符號常量定義了一個符號常量PI,其值為,其值為3.14。*/ 符號常量在程序中符號常量在程序中 一經(jīng)定義,凡出現(xiàn)的地方均代之以一經(jīng)定義,凡出現(xiàn)的地方均代之以常量值。常量值。二
6、、二、 變量變量1 1、變量的概念:在程序運(yùn)行過程中,其值可以被改變的量。、變量的概念:在程序運(yùn)行過程中,其值可以被改變的量。2 2、變量的、變量的6 6個要素:個要素: 變量名、變量類型、變量值、變量地址、變量名、變量類型、變量值、變量地址、 變量作用域、變量生存期。變量作用域、變量生存期。 (1 1)變量名:)變量名:每個變量都必須有一個名字每個變量都必須有一個名字變量名,變量名, 變量名只是一個標(biāo)識,其命名遵循標(biāo)識符命名規(guī)則變量名只是一個標(biāo)識,其命名遵循標(biāo)識符命名規(guī)則(2 2)變量類型:)變量類型:基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型?;緮?shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型。 存儲形式存儲形式: : (二進(jìn)制
7、數(shù)或(二進(jìn)制數(shù)或ASCIIASCII碼、定點(diǎn)或浮點(diǎn))碼、定點(diǎn)或浮點(diǎn)) 存儲寬度存儲寬度: : (占用的字節(jié)數(shù))(占用的字節(jié)數(shù)) 2 2、變量的、變量的6 6個要素:個要素:(3 3) 變量地址:變量地址: 變量首字節(jié)在內(nèi)存中地址。變量首字節(jié)在內(nèi)存中地址。(4 4) 變量值:變量值: 實(shí)際存放的內(nèi)容。實(shí)際存放的內(nèi)容。(5 5) 變量作用域:變量作用域:(全局或局部)(全局或局部)(6 6) 變量生存期:變量生存期:(動態(tài)或靜態(tài)(動態(tài)或靜態(tài) ) )4. 4. 變量的定義與初始化變量的定義與初始化在語言中,要求對所有用到的變量,必須在語言中,要求對所有用到的變量,必須先定先定義、后使用。義、后使用。
8、在定義變量的同時進(jìn)行賦初值的操作為變量初在定義變量的同時進(jìn)行賦初值的操作為變量初 始化。始化。(1 1)變量)變量定義定義 存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名, , 變量名變量名2 2;例如:例如:float radius,length,areafloat radius,length,area; radius=2.5radius=2.5;length=4.0length=4.0;定義定義賦值賦值關(guān)于變量的存儲類型:關(guān)于變量的存儲類型:(將在函數(shù)中詳細(xì)學(xué)習(xí))(將在函數(shù)中詳細(xì)學(xué)習(xí)) 變量在內(nèi)存中的存儲類型從變量在內(nèi)存中的存儲類型從 作用域作用域 和和 生存期生存期 二方面來描述:二方
9、面來描述:作用域作用域:局部變量、全局變量:局部變量、全局變量生存期生存期: 靜態(tài)存儲:程序運(yùn)行時存儲空間一直固定。靜態(tài)存儲:程序運(yùn)行時存儲空間一直固定。 動態(tài)存儲:程序運(yùn)行期間存儲空間動態(tài)分配。動態(tài)存儲:程序運(yùn)行期間存儲空間動態(tài)分配。(2 2)變量初始化:)變量初始化:在定義變量的同時賦值。在定義變量的同時賦值。 初始化格式:初始化格式: 存儲類型存儲類型 數(shù)據(jù)類型變量名數(shù)據(jù)類型變量名=初值初值,變量名變量名2=2=初值初值22;例如:例如:float radius=2.5,length=4.0,areafloat radius=2.5,length=4.0,area;2.1.3 2.1.3
10、 整型數(shù)據(jù)整型數(shù)據(jù) 整型數(shù)據(jù)分為整型數(shù)據(jù)分為整型常量和整型變量整型常量和整型變量。1、整型常量的表示方法:、整型常量的表示方法:十進(jìn)制整數(shù)十進(jìn)制整數(shù):123、65535、-2; 而而023和和23D不合法。不合法。八進(jìn)制整數(shù)八進(jìn)制整數(shù):數(shù)字?jǐn)?shù)字0開頭,開頭,07八個數(shù)字。如:八個數(shù)字。如:012、0765、0177777, 而而256、0398不合法。不合法。十六進(jìn)制整數(shù)十六進(jìn)制整數(shù):以:以0X開頭,數(shù)字開頭,數(shù)字09、AF或或af來表示。如:來表示。如: 0X2A、0XFFFF, 而而5A、0X3G不合法。不合法。整型常數(shù)的后綴整型常數(shù)的后綴: (L 表示長整數(shù),表示長整數(shù),U 表示無符號)
11、表示無符號) 計算機(jī)表示的數(shù)的范圍是有限的。如計算機(jī)表示的數(shù)的范圍是有限的。如16位(位(2字節(jié))字長的表字節(jié))字長的表示示無符號整數(shù)為無符號整數(shù)為065535,帶符號整數(shù)范圍帶符號整數(shù)范圍 -3276832767,超,超出此范圍必須用長整型(出此范圍必須用長整型(4字節(jié))來表示。字節(jié))來表示。 358000L、158L 表示十進(jìn)制長整數(shù),表示十進(jìn)制長整數(shù),(158L在內(nèi)存中占在內(nèi)存中占4字節(jié),而字節(jié),而158占占2字節(jié)。字節(jié)。)P21頁例頁例2-1八進(jìn)制與十六進(jìn)制:八進(jìn)制與十六進(jìn)制:#include void main()int a,b,c; a=10,b=010,c=0 x10; prin
12、tf(%d,%d,%dn,a,b,c);運(yùn)行結(jié)果:運(yùn)行結(jié)果:10,8,16 (演示)(演示)2 2、 整型變量整型變量 (1 1)整型數(shù)在內(nèi)存中是以二進(jìn)制數(shù)形式存放的。)整型數(shù)在內(nèi)存中是以二進(jìn)制數(shù)形式存放的。 (2 2)根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又)根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又 分為類:分為類: 基本整型基本整型(類型說明符為(類型說明符為 intint)。)。 短整型短整型 (類型說明符為(類型說明符為 shortshort 或或short intshort int。)。) 長整型長整型 (類型說明符為(類型說明符為 longlong 或或long intlong int。)
13、。) 無符號整型。無符號整型。 無符號基本整型(無符號基本整型(unsigned intunsigned int) 無符號短整型(無符號短整型(unsigned shortunsigned short) 無符號長整型(無符號長整型(unsigned longunsigned long) 閱讀閱讀P19P19頁表頁表2-12-1(3 3)占用內(nèi)存字節(jié)數(shù)與值域)占用內(nèi)存字節(jié)數(shù)與值域 整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在1616位操作位操作系統(tǒng)中(系統(tǒng)中(Turbo C Turbo C 就是就是1616位編譯系統(tǒng))位編譯系統(tǒng))各整型變量所占字各整型變量所占
14、字節(jié)數(shù)與值域參見節(jié)數(shù)與值域參見 P19P19表表2-12-1(4 4)整型變量的定義)整型變量的定義 #include #include void main() void main() int a,b,c; / int a,b,c; /* *有符號整型變量有符號整型變量a,b,ca,b,c* */ / unsigned uunsigned u; /; /* *無符號整型變量無符號整型變量 u u * */ / a=20,b=40,c=30; a=20,b=40,c=30; u=a+b+c; u=a+b+c; printf( printf(“The value of u is %d.nThe v
15、alue of u is %d.n”,u);,u); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:The value of u is 90 The value of u is 90 (5) (5) 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 整數(shù)值超出了其存儲變量類型所能表示的值的范圍時稱為:整數(shù)值超出了其存儲變量類型所能表示的值的范圍時稱為:整數(shù)溢出整數(shù)溢出#includevoid main()short int a,b; a=32767;b=a+1; printf(“%d,%dn”,a,b);運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,- 32768 為什么結(jié)果是錯誤的為什么結(jié)果是錯誤的? ? 為了避免發(fā)生溢出錯誤,為了避免發(fā)生溢出錯誤
16、,應(yīng)將變量類型定義為長整型。應(yīng)將變量類型定義為長整型。 改為:改為:long a,b; printf(“%ld,%ldn”,a,b);(請看黑板圖示)(請看黑板圖示)(實(shí)例演示(實(shí)例演示: :去掉去掉shortshort再演再演 示示; ;再在再在TCTC中演示)中演示) 2.1.4 2.1.4 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)1、 實(shí)型常量表示方法實(shí)型常量表示方法 實(shí)型常量即實(shí)數(shù),在語言中又稱浮點(diǎn)數(shù),其值有兩種實(shí)型常量即實(shí)數(shù),在語言中又稱浮點(diǎn)數(shù),其值有兩種表達(dá)形式:表達(dá)形式: (1)小數(shù)形式)小數(shù)形式: 例如:例如:3.14、9.8、-123.456、0.13、0.0(2)指數(shù)形式)指數(shù)形式: E(e)。
17、例如:例如:3.0+5 表示表示3.0*105 一些不合法的實(shí)數(shù)參見教材一些不合法的實(shí)數(shù)參見教材 P22P22,2、實(shí)型變量、實(shí)型變量 (1)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式單精度實(shí)數(shù)在內(nèi)存中占單精度實(shí)數(shù)在內(nèi)存中占4 4個字節(jié)個字節(jié), ,如圖所示如圖所示: : 尾數(shù)部分尾數(shù)部分3 3字節(jié)字節(jié); ; 指數(shù)部分指數(shù)部分1 1字節(jié)。字節(jié)。指數(shù)符號占指數(shù)符號占1 1位位尾數(shù)符號占尾數(shù)符號占1 1位位(2)實(shí)型變量分類實(shí)型變量分類 (參見參見P19表表2-1) Float 單精度實(shí)型單精度實(shí)型 4字節(jié)字節(jié) Double 雙精度實(shí)型雙精度實(shí)型 8字節(jié)字節(jié) long double 長雙
18、精度實(shí)型長雙精度實(shí)型 16字節(jié)字節(jié)(3)實(shí)型數(shù)據(jù)的舍入誤差實(shí)型數(shù)據(jù)的舍入誤差: 由于一個數(shù)據(jù)的內(nèi)存單元是有限的由于一個數(shù)據(jù)的內(nèi)存單元是有限的,故表示的故表示的有效數(shù)字有效數(shù)字也是有限的也是有限的, 當(dāng)數(shù)據(jù)的有效數(shù)字超過了它的表示限度時就會出現(xiàn)誤差。當(dāng)數(shù)據(jù)的有效數(shù)字超過了它的表示限度時就會出現(xiàn)誤差。 閱讀教材。閱讀教材。結(jié)論:結(jié)論: float 數(shù)據(jù)保留前數(shù)據(jù)保留前7位有效數(shù)字,其余無效。位有效數(shù)字,其余無效。 double數(shù)據(jù)保留前數(shù)據(jù)保留前16位有效數(shù)字,其余無效。位有效數(shù)字,其余無效。 無論何種情況,小數(shù)只保留無論何種情況,小數(shù)只保留6位位。3、 實(shí)型實(shí)型常數(shù)常數(shù)的類型:的類型: 實(shí)型常數(shù)
19、不分單精度、雙精度等,實(shí)型常數(shù)不分單精度、雙精度等, 都按雙精度都按雙精度Double處理。處理。 例例 (演示)演示)#include void main()float a,b; a=123456.789e5; b=a+2; printf(“%fn”,a); printf(“%fn”,b); 結(jié)果:結(jié)果:12345678848.000000 12345678848.000000 例例 (演示)演示)#include void main() float x=111111.111,y=222222.222; printf(“%fn”,x+y); getch(); 結(jié)果:結(jié)果:333333.328
20、125 2.1.5 2.1.5 字符型數(shù)據(jù)字符型數(shù)據(jù)一、一、 字符常量字符常量1. 1. 字符常量的定義字符常量的定義用一對用一對單引號單引號括起來的括起來的單個字符單個字符,稱為字符常量。字符,稱為字符常量。字符常量只能是單個字符。常量只能是單個字符。例如,例如,A A、= =、3 3 、b b 等。等。2. 2. 轉(zhuǎn)義字符轉(zhuǎn)義字符語言還允許使用一種特殊形式的字符常量,就是語言還允許使用一種特殊形式的字符常量,就是以反以反斜杠斜杠“ ”開頭的若干字符開頭的若干字符-轉(zhuǎn)義字符。轉(zhuǎn)義字符。常用的轉(zhuǎn)義字符常用的轉(zhuǎn)義字符參見參見P23P23表表2.22.2 注意:注意:如果反斜杠或單引號本身作為字符
21、常量,必須使用轉(zhuǎn)義如果反斜杠或單引號本身作為字符常量,必須使用轉(zhuǎn)義字符:字符: 、 。( (使用使用 及及是錯誤的是錯誤的) )ooo ooo 為為3 3位位8 8進(jìn)制的進(jìn)制的ASCIIASCII碼;、碼;、Xhh Xhh 為為1616進(jìn)制進(jìn)制ASCIIASCII碼碼有關(guān)轉(zhuǎn)義字符,請看如下舉例:有關(guān)轉(zhuǎn)義字符,請看如下舉例:例例J3-1#include void main() printf(“x4Fx4Bx21n”); /* 等價于等價于printf(“OK!n”); */ printf(“x15 xABn”); 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: ! P35頁例頁例L3-10#include
22、 void main()int a,b,c;a=5,b=6,c=7;printf( ab ctderfn);printf(hijktLbMn); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:f ab c de hijk M2 2、 字符變量字符變量 字符變量的類型說明符為字符變量的類型說明符為 charchar,一般占用,一般占用1 1字節(jié)內(nèi)存單元。字節(jié)內(nèi)存單元。如:如:char a,b;char a,b;3 3、字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法、字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法(1) (1) 字符變量值的存儲字符變量值的存儲 字符變量用來存儲字符常量。將一個字符常量存儲到一個字符字符變量用來存儲字符常量。將
23、一個字符常量存儲到一個字符變量中,實(shí)際上是將該字符的變量中,實(shí)際上是將該字符的ASCIIASCII碼值(碼值(范圍在范圍在02550255之間的無符號之間的無符號整數(shù))整數(shù))存儲到內(nèi)存的一個字節(jié)中。存儲到內(nèi)存的一個字節(jié)中。例如,例如,char ch1, ch2; /char ch1, ch2; /* *定義兩個字符變量:定義兩個字符變量:ch1ch1,ch2ch2* */ /ch1=ch1=x x; ch2=; ch2=y y; /; /* *給字符變量賦值給字符變量賦值* */ / ch1=120 ch2=121 ch1=120 ch2=1210 1 1 1 1 0 0 00 1 1 1 1
24、 0 0 12. 2. 特性特性字符數(shù)據(jù)在內(nèi)存中存儲的是字符的字符數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCIIASCII碼碼 一個無符號整數(shù),一個無符號整數(shù),其形式與整數(shù)的存儲形式一樣,所以語言其形式與整數(shù)的存儲形式一樣,所以語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。整型量整型量2 2字節(jié),字符量字節(jié),字符量1 1字節(jié),當(dāng)整型量按字字節(jié),當(dāng)整型量按字符兩處理時,只有其低符兩處理時,只有其低8 8位參加處理。位參加處理。(1 1)一個字符型數(shù)據(jù),既可以字符形式輸出,)一個字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。也可以整數(shù)形式輸出。例例J3-2 #include
25、void main() char ch1,ch2; ch1=a; ch2=b; printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2); getch(); 程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果: ch1=a,ch2=b ch1=97,ch2=98 ()允許對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時就是對它們()允許對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時就是對它們的的ASCII碼值進(jìn)行算術(shù)運(yùn)算。碼值進(jìn)行算術(shù)運(yùn)算。 、 字符串常量字符串常量(1 1)字符串常量的概念和字符串長度)字符串常量的概念和字符串長度字符串常量是用一對字符串常量是用一對雙引號雙引號括起來的
26、若干字符序列。括起來的若干字符序列。如:如:“CHINACHINA”、”computercomputer”、”¥12.512.5”字符串中字符的個數(shù)稱為字符串中字符的個數(shù)稱為字符串長度字符串長度。長度為。長度為0 0的字符的字符串(即一個字符都沒有的字符串)稱為串(即一個字符都沒有的字符串)稱為空串空串,表示為,表示為“ ” (一對緊連的雙引號)。(一對緊連的雙引號)。例如,例如,“How do you doHow do you do”、“Good morningGood morning”等,都是等,都是字符串常量,其長度分別為字符串常量,其長度分別為1313和和1212(空格也是一個字符)。
27、(空格也是一個字符)。 如果如果反斜杠和雙引號反斜杠和雙引號作為字符串中的有效字符,則必作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。須使用轉(zhuǎn)義字符。例如:例如:(1 1)C:msdosv6.22 C:msdosv6.22C:msdosv6.22 C:msdosv6.22 (2 2)I say:Good bye! I say:Good bye!I say:Good bye! I say:Good bye!”(2) (2) 字符串的存儲字符串的存儲C C語言規(guī)定:在存儲字符串常量時,由系統(tǒng)在字符串的末尾自動加語言規(guī)定:在存儲字符串常量時,由系統(tǒng)在字符串的末尾自動加 一個一個00作為字符串的結(jié)束標(biāo)志
28、。作為字符串的結(jié)束標(biāo)志。注意:在源程序中書寫字符串常量時,不必加結(jié)束字符注意:在源程序中書寫字符串常量時,不必加結(jié)束字符00,否則,否則畫蛇添足。畫蛇添足。 如果有一個字符串為如果有一個字符串為“CHINACHINA”,則它在內(nèi)存中的實(shí)際存儲如下所示:,則它在內(nèi)存中的實(shí)際存儲如下所示:最后一個字符最后一個字符00是系統(tǒng)自動加上的,它占用字節(jié)而非字節(jié)。是系統(tǒng)自動加上的,它占用字節(jié)而非字節(jié)。結(jié)論:字符串的結(jié)論:字符串的存儲長度存儲長度等于其字符個數(shù)加等于其字符個數(shù)加1 1請問:字符常量請問:字符常量 a a 和字符串常量和字符串常量 “a a” 有何不同?有何不同?例例j3-3#include v
29、oid main() char c1 =a,c2 =a; printf(%d,%dn,sizeof(c1),sizeof(c2); getch(); 結(jié)果:結(jié)果:1,2CHINA02.2 C2.2 C語言的算術(shù)符與表達(dá)式語言的算術(shù)符與表達(dá)式2 .2.1 C2 .2.1 C語言的運(yùn)算符簡介語言的運(yùn)算符簡介 1. 1. 運(yùn)算符分類:運(yùn)算符分類:運(yùn)算符按需要的操作數(shù)的個數(shù)分為:運(yùn)算符按需要的操作數(shù)的個數(shù)分為: 單目運(yùn)算符、單目運(yùn)算符、 雙目運(yùn)算符、雙目運(yùn)算符、 三目運(yùn)算符三目運(yùn)算符運(yùn)算符按運(yùn)算符按功能分類功能分類如下:如下:算術(shù)運(yùn)算符:算術(shù)運(yùn)算符:+ - + - * * / /(2 2個個整數(shù)整數(shù)的
30、商)的商) % %(2 2個個整數(shù)整數(shù)的余數(shù))的余數(shù))自增、自減運(yùn)算符:自增、自減運(yùn)算符:+ - -+ - -關(guān)系運(yùn)算符:關(guān)系運(yùn)算符: = = = !=邏輯運(yùn)算符:邏輯運(yùn)算符: & | !& | !位運(yùn)算符:位運(yùn)算符: ( (按位取反按位取反) | () | (按位異或按位異或) &) &賦值運(yùn)算符:賦值運(yùn)算符: = = 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 += -= += -= * *= /= %= /= %=條件運(yùn)算符:條件運(yùn)算符: ? : 逗號運(yùn)算符:逗號運(yùn)算符: , 將幾個表達(dá)式組合成一個表達(dá)式。將幾個表達(dá)式組合成一個表達(dá)式。指針運(yùn)算符:指針運(yùn)算符: * * & & * * 用于取變量值,用
31、于取變量值, & &用來取變量地址用來取變量地址求字節(jié)數(shù)運(yùn)算符:求字節(jié)數(shù)運(yùn)算符: sizeof sizeof 取某數(shù)據(jù)類型所占字節(jié)數(shù)。取某數(shù)據(jù)類型所占字節(jié)數(shù)。類型轉(zhuǎn)換運(yùn)算符:類型轉(zhuǎn)換運(yùn)算符: ( (類型符號類型符號) )分量運(yùn)算符:分量運(yùn)算符: 。 -下標(biāo)運(yùn)算符:下標(biāo)運(yùn)算符: 2. 2. 運(yùn)算符的優(yōu)先級與結(jié)合性運(yùn)算符的優(yōu)先級與結(jié)合性 語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。 表達(dá)式的求值運(yùn)算是由其中表達(dá)式的求值運(yùn)算是由其中 決定的。按決定的。按運(yùn)算符執(zhí)行的順序規(guī)定其等級運(yùn)算符執(zhí)行的順序規(guī)定其等級-優(yōu)先級。優(yōu)先級。 所謂結(jié)合性是指:所謂結(jié)合性是指: 自左至右的結(jié)合方向
32、,稱為自左至右的結(jié)合方向,稱為左結(jié)合性左結(jié)合性。反之,稱為。反之,稱為右結(jié)合性。右結(jié)合性。例:例:-5*2+8/2 /* -5為單目運(yùn)算、右結(jié)合,表達(dá)式結(jié)果為為單目運(yùn)算、右結(jié)合,表達(dá)式結(jié)果為 -6。*/ a=b=7 /*此為賦值表達(dá)式,右結(jié)合性,先算此為賦值表達(dá)式,右結(jié)合性,先算b=7,再算再算a=b,結(jié)果結(jié)果 a、 b都是都是7*/ 除除運(yùn)算符、運(yùn)算符、運(yùn)算符和運(yùn)算符和運(yùn)算符是運(yùn)算符是外,其它運(yùn)算外,其它運(yùn)算符都是符都是。各種運(yùn)算符的優(yōu)先級和結(jié)合性參見附錄各種運(yùn)算符的優(yōu)先級和結(jié)合性參見附錄 B1 1、基本算術(shù)運(yùn)算符、基本算術(shù)運(yùn)算符(1 1)關(guān)于整除運(yùn)算:)關(guān)于整除運(yùn)算:: /: / 兩整數(shù)相
33、除,商為整數(shù),例如:兩整數(shù)相除,商為整數(shù),例如:5 / 2 = 25 / 2 = 2。若要得到。若要得到2.52.5,必須用:,必須用:5.0/2 5.0/2 或:或:5/2.05/2.0(2 2)關(guān)于求余數(shù)運(yùn)算:)關(guān)于求余數(shù)運(yùn)算: 兩側(cè)的操作數(shù)應(yīng)為整型數(shù)據(jù),否則出錯,兩側(cè)的操作數(shù)應(yīng)為整型數(shù)據(jù),否則出錯,以被除數(shù)符以被除數(shù)符號作為結(jié)果的符號號作為結(jié)果的符號。如:如:100%3=1 -5%2= -1 5% -2=1100%3=1 -5%2= -1 5% -2=12 2、算術(shù)表達(dá)式、算術(shù)表達(dá)式 用用算術(shù)運(yùn)算符和括號算術(shù)運(yùn)算符和括號將運(yùn)算對象(常量、變量和函數(shù)將運(yùn)算對象(常量、變量和函數(shù)等)連接起來
34、的、符合語言語法規(guī)則的式子等)連接起來的、符合語言語法規(guī)則的式子-算術(shù)表達(dá)式算術(shù)表達(dá)式。每個表達(dá)式都有一個值和類型。每個表達(dá)式都有一個值和類型。例如:例如:a+b (x+r)a+b (x+r)* *8-(a+b)/7 +i sin(x)+sin(y) 8-(a+b)/7 +i sin(x)+sin(y) (+i)-(j+)+(k-) (-b+sqrt(b (+i)-(j+)+(k-) (-b+sqrt(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a)書寫表達(dá)式注意兩點(diǎn):書寫表達(dá)式注意兩點(diǎn): (1 1) 運(yùn)算符對運(yùn)算符對操作數(shù)操作數(shù)有什么要求(類型、個數(shù)等)以及運(yùn)有什么要
35、求(類型、個數(shù)等)以及運(yùn) 算結(jié)果的數(shù)據(jù)類型。算結(jié)果的數(shù)據(jù)類型。(2 2) 運(yùn)算符的優(yōu)先級別和結(jié)合方向,它是決定表達(dá)式的運(yùn)運(yùn)算符的優(yōu)先級別和結(jié)合方向,它是決定表達(dá)式的運(yùn) 算規(guī)則的重要因素。算規(guī)則的重要因素。3 3、自增自減運(yùn)算符、自增自減運(yùn)算符(重點(diǎn)與難點(diǎn)(重點(diǎn)與難點(diǎn))(1 1)作用:)作用: 自增自增1 1運(yùn)算(運(yùn)算(+)使)使單個變量單個變量的值增,自減的值增,自減1 1(-)運(yùn))運(yùn) 算使算使單個變量單個變量的值減。的值減。(2 2)用法與運(yùn)算規(guī)則)用法與運(yùn)算規(guī)則 (1 1)前置運(yùn)算)前置運(yùn)算運(yùn)算符放在變量之前:運(yùn)算符放在變量之前:i; i; i; i; 先使變量的值增(或減),然后再以變化
36、后的值參與其它運(yùn)先使變量的值增(或減),然后再以變化后的值參與其它運(yùn)算,即算,即。 (2 2)后置運(yùn)算)后置運(yùn)算運(yùn)算符放在變量之后:運(yùn)算符放在變量之后:i i; i; i; ; 變量先參與其它運(yùn)算,然后再使變量的值增(或減變量先參與其它運(yùn)算,然后再使變量的值增(或減1)1)即即。例例J3-4#include void main() int i=3,x,y; x=i+; /* 執(zhí)行后,執(zhí)行后,x的值為的值為3,i的值為的值為4*/ y=+i; /* 執(zhí)行后,執(zhí)行后,y的值為的值為5,i的值為的值為5*/ printf(%d %d %dn,x,y,i); 執(zhí)行后,輸出為:執(zhí)行后,輸出為:3 5 5
37、 例例#include void main()int i=8; printf(%d,+i); printf(%d,-i); printf(%d,i+); printf(%d,i-); printf(%d,-i+); printf(%d,-i-);/*單目運(yùn)算單目運(yùn)算+、- -結(jié)合方向結(jié)合方向,相當(dāng)于,相當(dāng)于(i+) 和和 -(i- -) */ getch();結(jié)果:結(jié)果:9 8 8 9 -8 -9例例#includevoid main()int x=100; printf(%d,%d,%d,%dn,x+,x,-x,x); /*TC20編譯器下編譯器下的求值順序為:的求值順序為:*/ print
38、f(%dn,x); getch(); TC20下運(yùn)行結(jié)果:下運(yùn)行結(jié)果:99,99,99,100 100 例例(注意:本例不要求掌握注意:本例不要求掌握)main()int a,b,c; a=b=c=0; a=+b+c; /*b,c均先增均先增1,然后再相加,然后再相加*/ a=b+c+; /*b,c先相加,然后再增先相加,然后再增1*/ a=+b+c+; /*b先增先增1和和b相加后,相加后,c再增再增1*/ a=b - -+ - - c; /*c先減先減1和和b相加后,相加后,b再減再減1*/ printf(“%d,%d,%dn”,a,b,c); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:5,2,2結(jié)論:結(jié)論:形
39、如形如 i+i這樣的表達(dá)式,從左至右盡可能多地將這樣的表達(dá)式,從左至右盡可能多地將若干字符組合成運(yùn)算符若干字符組合成運(yùn)算符, 故故i+i解釋為(解釋為(i+)+i。思考題:當(dāng)思考題:當(dāng)j=3時,表達(dá)式時,表達(dá)式(+j)-(j+)+(j+)的值是多的值是多 少?少? 計算完成后計算完成后j的值又是多少?的值又是多少?(3)說明)說明(1)自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制)自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制 變量加(或減),以及指針變量中,使指針指向變量加(或減),以及指針變量中,使指針指向 下(或上)一個地址。下(或上)一個地址。(3)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自
40、減運(yùn)算在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算 時,很容易出錯,所以最好避免這種用法。時,很容易出錯,所以最好避免這種用法。-4和和62.2.3 2.2.3 賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符與賦值表達(dá)式1、簡單賦值運(yùn)算符和賦值表達(dá)式、簡單賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算是把數(shù)據(jù)賦給內(nèi)存中存儲的變量賦值運(yùn)算是把數(shù)據(jù)賦給內(nèi)存中存儲的變量。 “=”就是就是簡單賦值運(yùn)算符簡單賦值運(yùn)算符,由,由“=”連接的式子稱為連接的式子稱為簡單賦簡單賦值表達(dá)式值表達(dá)式。一般形式為:一般形式為:變量變量 = 表達(dá)式表達(dá)式 例如,例如, x =(a+5-sin(b)/sqtr( s ) y = i+ - (floa
41、t)5 / 2 n=n+1賦值運(yùn)算具有右結(jié)合性,賦值運(yùn)算具有右結(jié)合性,如:如:a=b=c=5理解為:理解為:a=(b=(c=5) a=(b=5)/(c=2) 先算先算b=5, 再算再算c=2,則則5/2得到得到2,賦值給,賦值給a, 整個表達(dá)式的值整個表達(dá)式的值也是也是2。思考:設(shè)變量思考:設(shè)變量a的值為的值為9,表達(dá)式,表達(dá)式b=(a=4)/(b=a) 的值是的值是1還是還是0?表達(dá)式尾無分號表達(dá)式尾無分號2 2、賦值運(yùn)算中的類型轉(zhuǎn)換、賦值運(yùn)算中的類型轉(zhuǎn)換 賦值運(yùn)算符左右類型不同時,系統(tǒng)自動將右邊數(shù)據(jù)類型賦值運(yùn)算符左右類型不同時,系統(tǒng)自動將右邊數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型。轉(zhuǎn)換成左邊的數(shù)據(jù)類
42、型。(1 1)實(shí)型數(shù)據(jù)賦值給整型變量)實(shí)型數(shù)據(jù)賦值給整型變量:舍去小數(shù)部分舍去小數(shù)部分 舍去小數(shù)部分后,再賦給整型變量。這里要注意變量的舍去小數(shù)部分后,再賦給整型變量。這里要注意變量的類型(類型(shortshort,intint,longlong)以及相應(yīng)的數(shù)值范圍,避免賦)以及相應(yīng)的數(shù)值范圍,避免賦值后數(shù)據(jù)的溢出。例如:值后數(shù)據(jù)的溢出。例如: float f=65538.0; short int i; i=f; 此時變量此時變量 i i的值為的值為2 2, 出現(xiàn)了出現(xiàn)了 數(shù)據(jù)溢出數(shù)據(jù)溢出 的錯誤的錯誤, , 為什么?為什么?如下思考題:如下思考題: 程序運(yùn)行結(jié)果是什么?程序運(yùn)行結(jié)果是什么?
43、#includevoid main()float num=2.5; int a; a=(int)num; printf(%dn,a); printf(%fn,num); printf(%dn,sizeof(num);getch();結(jié)果:結(jié)果:2.500000 (2) 將整型數(shù)據(jù)賦給實(shí)型變量將整型數(shù)據(jù)賦給實(shí)型變量 數(shù)據(jù)以浮點(diǎn)數(shù)形式存儲到實(shí)型變量中去,但值的大小不變。數(shù)據(jù)以浮點(diǎn)數(shù)形式存儲到實(shí)型變量中去,但值的大小不變。 例如:定義例如:定義float a,如果,如果a=19,則將則將19轉(zhuǎn)換成轉(zhuǎn)換成19.00000(單(單 精度實(shí)型有精度實(shí)型有7 位有效數(shù)字)位有效數(shù)字),然后賦給變量然后賦給變
44、量a。 若定義若定義double b,如果,如果 b=19,則:,則: 賦給賦給b的值是的值是19.00000000000000 (雙精度實(shí)型有(雙精度實(shí)型有16位有效數(shù)字)。位有效數(shù)字)。(3)字符型賦給整型)字符型賦給整型 字符型字符型1字節(jié)、整型字節(jié)、整型2字節(jié),將字符對應(yīng)的字節(jié),將字符對應(yīng)的ASCII碼存放到碼存放到整型的低字節(jié)(整型的低字節(jié)(8位)中,其高位)中,其高8為填為填0(4)整型數(shù)據(jù)賦值給字符型)整型數(shù)據(jù)賦值給字符型 將整型數(shù)據(jù)的低將整型數(shù)據(jù)的低8 8位賦值給字符型,此時可能會得到不正位賦值給字符型,此時可能會得到不正確的結(jié)果。確的結(jié)果。例例L2-12 參見參見P37 #i
45、ncludevoid main()int a,b=322,c; float x,y=8.88; char c1=k,c2; a=y;x=b;c=c1; printf(“%d,%f,%d”,a,x,c,);運(yùn)行結(jié)果:運(yùn)行結(jié)果:8,322.000000,107,B 結(jié)論:結(jié)論:長賦短:按短的字節(jié)數(shù)截取長的低位字節(jié)賦給短的長賦短:按短的字節(jié)數(shù)截取長的低位字節(jié)賦給短的,符號不管。符號不管。短賦長:無符號用填充高字節(jié)(短賦長:無符號用填充高字節(jié)();); 有符號用符號,正用或負(fù)用填充高字節(jié)(有符號用符號,正用或負(fù)用填充高字節(jié)()。)。大寫字母大寫字母B B 從何從何而來?而來? 3、復(fù)合賦值運(yùn)算、復(fù)合賦
46、值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個雙目運(yùn)算符構(gòu)成的。復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個雙目運(yùn)算符構(gòu)成的。C語言規(guī)定的語言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:種復(fù)合賦值運(yùn)算符如下:+=,- =,*=,/=,%=; /*復(fù)合算術(shù)運(yùn)算符(復(fù)合算術(shù)運(yùn)算符(5個)個)*/&=,=,|=,=; /*復(fù)合位運(yùn)算符(復(fù)合位運(yùn)算符(5個)個)*/ 一般形式一般形式 : 變量變量 雙目運(yùn)算符雙目運(yùn)算符=表達(dá)式表達(dá)式 等價于:等價于: 變量變量=變量變量 運(yùn)算符運(yùn)算符 表達(dá)式表達(dá)式 例如,例如,x += 3 /* 等價于等價于x=x+3 */ y *= x + 6/* 等價于等價于y=y*(x+6),
47、而不是,而不是y=y*x+6 */例例 #include mian() int x=2; x+=x-=x*x; /* 右結(jié)合為右結(jié)合為x= x+(x=x-(x*x) */ printf(“x=%dn”,x); getch(); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:x= - 4.2.4 .2.4 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符逗號運(yùn)算符: : ( (雙目運(yùn)算)雙目運(yùn)算)逗號表達(dá)式逗號表達(dá)式: : 用逗號運(yùn)算符用逗號運(yùn)算符 “,” 將兩個以上表達(dá)式連將兩個以上表達(dá)式連接起來的表達(dá)式。接起來的表達(dá)式。逗號表達(dá)式的一般形式:逗號表達(dá)式的一般形式:其一般形式為:其一般形式為: 表達(dá)式表達(dá)式1 1
48、 ,表達(dá)式,表達(dá)式2 2擴(kuò)展形式為:擴(kuò)展形式為: 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2, , , 表達(dá)式表達(dá)式n n 例如:例如: a=5,c=3a=5,c=3* *2,(e=3,7+10) 2,(e=3,7+10) 逗號運(yùn)算符運(yùn)算級別逗號運(yùn)算符運(yùn)算級別:最低,:最低,結(jié)合方向結(jié)合方向: 從左至右。從左至右。逗號表達(dá)式的值:逗號表達(dá)式的值: 從左到右從左到右先算表達(dá)式先算表達(dá)式1 1的值,再依次計算各表達(dá)式的值,再依次計算各表達(dá)式的值,最后計算表達(dá)式的值,最后計算表達(dá)式n n的值。的值。 表達(dá)式中的表達(dá)式中的 “表達(dá)式表達(dá)式 i i ” 還可以是逗號表達(dá)式。還可以是逗號表達(dá)式。a=5,c=
49、3*2,(e=3,7+10) 表達(dá)式的值為:表達(dá)式的值為:1717,a a的值是的值是5 5,c c的值是的值是6 6,e e的值是的值是3 3再例如:再例如:a=8+10,aa=8+10,a* *3 3 整個表達(dá)式的值是整個表達(dá)式的值是 5454 (x=2 (x=2* *5,x5,x* *3),x+5 3),x+5 整個表達(dá)式的值是整個表達(dá)式的值是 1515、x x 的值是的值是 1010P38頁頁例例2-14 (演示)演示)#includevoid main()int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c);/* printf(y=%d,x=%dn,y,x); g
50、etch();運(yùn)行結(jié)果:運(yùn)行結(jié)果:y=10,x=64647賦值運(yùn)算的優(yōu)先級高于逗號運(yùn)算的優(yōu)先級賦值運(yùn)算的優(yōu)先級高于逗號運(yùn)算的優(yōu)先級例例 (演示)演示)#include void main() int a=4; char b=B; double c=3.14; printf(a*a,a)=%dn,(a*a,a); printf(c+2.23,a)=%dn,(c+2.23,a); printf(c,b,a)=%dn,(c,b,a); getch(); 運(yùn)行結(jié)果運(yùn)行結(jié)果 (a*a,a)=4 (c+2.23,a)=4 (c,b,a)=4 2.2.5 2.2.5 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表
51、達(dá)式 所謂所謂“關(guān)系運(yùn)算關(guān)系運(yùn)算”實(shí)際上就是實(shí)際上就是“比較運(yùn)算比較運(yùn)算”,即將兩個數(shù)據(jù)進(jìn)行比較,判定兩個數(shù)據(jù)是否符合即將兩個數(shù)據(jù)進(jìn)行比較,判定兩個數(shù)據(jù)是否符合給定的關(guān)系。給定的關(guān)系。 例如:例如:“a ba b”中的中的“ ”表示一個大于關(guān)系運(yùn)算。表示一個大于關(guān)系運(yùn)算。 如果如果a a的值是的值是5 5, b b的值是的值是3 3,則大于關(guān)系運(yùn)算,則大于關(guān)系運(yùn)算“ ”的結(jié)果為的結(jié)果為“真真”,即條件成立;,即條件成立; 如果如果a a的值是的值是2 2, b b的值是的值是3 3,則大于關(guān)系運(yùn)算,則大于關(guān)系運(yùn)算“ ”的結(jié)果為的結(jié)果為“假假”,即條件不成立。,即條件不成立。1、關(guān)系運(yùn)算符及其優(yōu)
52、先次序、關(guān)系運(yùn)算符:、關(guān)系運(yùn)算符:C C語言提供語言提供6 6種關(guān)系運(yùn)算符:種關(guān)系運(yùn)算符: ( (小于小于), = (), (), (大于大于), ), = ( = (大于或等于大于或等于), = (), = (等于等于), != (), != (不等于不等于) )注意:在語言中,注意:在語言中,“等于等于”關(guān)系運(yùn)算符是雙等號關(guān)系運(yùn)算符是雙等號“= = =”, 而不是單等號而不是單等號“= = ”。、優(yōu)先級:優(yōu)先級:1 1)在關(guān)系運(yùn)算符中,)在關(guān)系運(yùn)算符中,前前4 4個優(yōu)先級相同,后個優(yōu)先級相同,后2 2個也相同,且個也相同,且前前4 4個高于后個高于后2 2個個。2 2)與其它種類運(yùn)算符的優(yōu)
53、先級關(guān)系:)與其它種類運(yùn)算符的優(yōu)先級關(guān)系: 關(guān)系運(yùn)算符的優(yōu)先級,低于算術(shù)運(yùn)算符,但高于賦關(guān)系運(yùn)算符的優(yōu)先級,低于算術(shù)運(yùn)算符,但高于賦值運(yùn)算符值運(yùn)算符2 2、關(guān)系表達(dá)式、關(guān)系表達(dá)式 (1 1)、關(guān)系表達(dá)式的概念:)、關(guān)系表達(dá)式的概念: 用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來,進(jìn)行關(guān)系運(yùn)算用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來,進(jìn)行關(guān)系運(yùn)算的式子。的式子。 例如,下面的關(guān)系表達(dá)式都是合法的:例如,下面的關(guān)系表達(dá)式都是合法的:abab,a+bc-da+bc-d,(a=3)=(b=5)(a=3)=ba=b,(ab)= =(bc)(ab)= =(bc)(2 2)、關(guān)系表達(dá)式的值)、關(guān)系表達(dá)式的值 邏輯值(非邏輯值(
54、非“真真”即即“假假”)。 用整數(shù)用整數(shù)“”表示表示“邏輯真邏輯真”,用整數(shù),用整數(shù)“”表示表示“邏邏輯假輯假”。 于是關(guān)系表達(dá)式的這種邏輯值,還可以參與其它種類的于是關(guān)系表達(dá)式的這種邏輯值,還可以參與其它種類的運(yùn)算,例如算術(shù)運(yùn)算、邏輯運(yùn)算等。運(yùn)算,例如算術(shù)運(yùn)算、邏輯運(yùn)算等。例如:假設(shè)例如:假設(shè)n1=3,n2=4,n3=5,則:,則: (1)n1n2 的值的值=0。 (2)(n1n2)!=n3 的值的值=1。 (3)n1n2n3 的值的值=1。 思考題:任意改變思考題:任意改變n1或或n2的值,會影響整個表的值,會影響整個表 達(dá)式的值嗎?為什么?達(dá)式的值嗎?為什么? (4)(n1n2)+n3的
55、值是的值是 6,因為(,因為(n1n2)的)的 值值=1,1+5=6。 舉例:設(shè)舉例:設(shè)a=5,b=4,c=1,d=2 a=5,b=4,c=1,d=2 則:則: a+bc+d 相當(dāng)于相當(dāng)于 (a+b) b= =c 相當(dāng)于相當(dāng)于 (ab)= =c 其值為其值為 1 b+da 相當(dāng)于相當(dāng)于 (b+d)b!=dc 相當(dāng)于相當(dāng)于 (ab)!=(dc) 其值為其值為 0 x=ab 相當(dāng)于相當(dāng)于 x=(ab) x=1 y=abc 相當(dāng)于相當(dāng)于 y=(ab)c) y=0 54還要注意區(qū)別 = 與= = :設(shè)x=3,求出下列兩個表達(dá)式的值及x 的值。 1) x=0; 2) x= = 0; 表達(dá)式的值為表達(dá)式的
56、值為0,x的值為的值為0表達(dá)式的值為表達(dá)式的值為0,x的值為的值為3 2.2.6 2.2.6 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式關(guān)系表達(dá)式只能描述單一條件,例如關(guān)系表達(dá)式只能描述單一條件,例如“x=0”。如果需要描述:如果需要描述:0 x=0) & (x10) (x5) ! (x= =0) (year%4=0)&(year%100!=0)|(year%400=0) (2 2)運(yùn)算規(guī)則運(yùn)算規(guī)則:僅當(dāng)兩個運(yùn)算量的值都為:僅當(dāng)兩個運(yùn)算量的值都為“真真”時,運(yùn)算結(jié)果為時,運(yùn)算結(jié)果為 “真真”,否則為,否則為“假假”。 :僅當(dāng)兩個運(yùn)算量的值都為:僅當(dāng)兩個運(yùn)算量的值都為“假假”時,運(yùn)算結(jié)果為時,
57、運(yùn)算結(jié)果為 “假假”,否則為,否則為“真真”。 : 當(dāng)運(yùn)算量的值為當(dāng)運(yùn)算量的值為“真真”時,運(yùn)算結(jié)果為時,運(yùn)算結(jié)果為“假假”;當(dāng);當(dāng)運(yùn)算量的值為運(yùn)算量的值為“假假”時,時, 運(yùn)算結(jié)果為運(yùn)算結(jié)果為“真真”。例如,設(shè)例如,設(shè)x=5,則,則(x=0) & (x10)的值為的值為“真真”, (x5)的值為的值為“假假”57邏輯運(yùn)算的真值表 0 0 0 1 1 0 1 1 pq!pp&qp|q1100000101111 11 10 00 00 00 00 01 10 01 11 11 1非非 0非非 0非非 0非非 0(3 3)邏輯運(yùn)算符的優(yōu)先級)邏輯運(yùn)算符的優(yōu)先級 1)邏輯非的優(yōu)先級最高,邏輯與次之,
58、邏輯或最低,)邏輯非的優(yōu)先級最高,邏輯與次之,邏輯或最低, 即:即: !(非)?。ǚ牵?&(與)(與) |(或)(或) 2)與其它種類運(yùn)算符的優(yōu)先關(guān)系)與其它種類運(yùn)算符的優(yōu)先關(guān)系 例如:例如:ab&cd 等價于等價于 (ab)&(cd) !b= =c|da 等價于等價于 (!b)= =c)|(dc&x+yc)&(x+y)43.2的結(jié)果為的結(jié)果為1對嗎對嗎?錯錯, 541, 13. 206=6=6的結(jié)果為的結(jié)果為?0 01 1a=4, 則則 !a 0a=4,b=5 則則 a&b 1a=4,b=5 則則 a|b 1a=4,b=5 則則 !a&b 0a=4,b=5 則則 !a|b 14&0|2 1C
59、語言中,運(yùn)算對象不但可語言中,運(yùn)算對象不但可以是以是0和和1、0和非和非0的整數(shù),的整數(shù),也可以是也可以是任何類型任何類型的數(shù)據(jù)。的數(shù)據(jù)。最后判斷一個量的真假時最后判斷一個量的真假時以以0作為作為 假假 ,非,非0作為作為真真(1 1)、在邏輯運(yùn)算中:若邏輯表達(dá)式在運(yùn)算符)、在邏輯運(yùn)算中:若邏輯表達(dá)式在運(yùn)算符“|”的左邊的左邊 的值非零,則系統(tǒng)不再對運(yùn)算符的值非零,則系統(tǒng)不再對運(yùn)算符“|”的右邊進(jìn)行運(yùn)算,的右邊進(jìn)行運(yùn)算, 即可斷定運(yùn)算的結(jié)果為即可斷定運(yùn)算的結(jié)果為 1 1。 例如:例如: int a=5,b=2;int a=5,b=2; 邏輯表達(dá)式邏輯表達(dá)式: a | (b+=b) : a |
60、(b+=b) 的值為的值為 1 1, 但變量但變量b b的值仍然是的值仍然是 2 2。因為。因為變量變量a a的值為非零,的值為非零, 所以不計算所以不計算(b+=b)(b+=b)。(2 2)、若邏輯表達(dá)式在運(yùn)算符)、若邏輯表達(dá)式在運(yùn)算符“&”的左邊的值是零,則系的左邊的值是零,則系統(tǒng)不再對運(yùn)算符統(tǒng)不再對運(yùn)算符“&”的右邊進(jìn)行運(yùn)算的右邊進(jìn)行運(yùn)算, , 即可斷定運(yùn)算的即可斷定運(yùn)算的結(jié)果為結(jié)果為 0 0。 例如:例如: int a=0,b=2; int a=0,b=2; 則邏輯表達(dá)式則邏輯表達(dá)式 a & (b+=b) a & (b+=b) 的值為的值為0 0,變量,變量b b的值仍的值仍然是然是2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本林業(yè)
- 傳單派發(fā)合同范本
- 鄉(xiāng)鎮(zhèn)物業(yè)收費(fèi)合同范本
- 勞務(wù)公司租車合同范本
- 公會主播合同范本
- 勞務(wù)購買合同范例
- 公司經(jīng)營模式合同范本
- 出售買賣合同范本
- 勞動合同轉(zhuǎn)簽合同范本
- 2025國合通測校園招聘筆試參考題庫附帶答案詳解
- 2024年湖南省公務(wù)員錄用考試《行測》真題及答案解析
- 人教版小學(xué)六年級下冊音樂教案全冊
- 12J201平屋面建筑構(gòu)造圖集(完整版)
- 2024年個人信用報告(個人簡版)樣本(帶水印-可編輯)
- 16J914-1 公用建筑衛(wèi)生間
- 20CS03-1一體化預(yù)制泵站選用與安裝一
- (完整版)四年級上冊數(shù)學(xué)豎式計算題100題直接打印版
- 計數(shù)的基本原理說課
- 機(jī)器視覺論文(英文)
- 初中花城版八年級下冊音樂6.軍港之夜(15張)ppt課件
- 《供應(yīng)鏈管理》讀書筆記
評論
0/150
提交評論