第二章數(shù)據(jù)類型、運算符與表達(dá)式_第1頁
第二章數(shù)據(jù)類型、運算符與表達(dá)式_第2頁
第二章數(shù)據(jù)類型、運算符與表達(dá)式_第3頁
第二章數(shù)據(jù)類型、運算符與表達(dá)式_第4頁
第二章數(shù)據(jù)類型、運算符與表達(dá)式_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第二章 數(shù)據(jù)類型、 運算符與表達(dá)式(9fda.4b)16 = (_)8上節(jié)課問題回顧0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 a1011 b1100 c1101 d1110 e1111 f000 0001 1010 2011 3100 4101 5110 6111 7十六進(jìn)制數(shù): 9 f d a . 4 b1001二進(jìn)制數(shù):1111 1101 . 0100 10111010八進(jìn)制數(shù):117732 .226117732.226(256)7 = (_)6上節(jié)課問題回顧2107102562 75 76 7139

2、()(5 1 余1余5余3351最終目的是:用c語言編寫程序來解決實際問題!數(shù)據(jù)類型、運算符與表達(dá)式理由1:因為c語言流行.理由2:因為c語言考研時必考。理由3: 因為c語言在各種程序考試中首當(dāng)其中。理由4:因為它是必修課,是老師逼的,不學(xué)不能拿學(xué)分 理由n: 為什么我們要學(xué)習(xí)c語言呢?數(shù)據(jù)類型、運算符與表達(dá)式沃思公式程序是解決某種問題的一組指令的有序集合。對數(shù)據(jù)的描述對操作的描述程序數(shù)據(jù)結(jié)構(gòu)算法結(jié)論:學(xué)好c語言首先就必須十 分了解c語言的數(shù)據(jù)類型、 與運算符與表達(dá)式。掌握變量和常量的概念;理解各種類型的數(shù)據(jù)在內(nèi)存中的存放形式;掌握各種類型數(shù)據(jù)的常量的使用方法;掌握各

3、種整型、浮點型、字符型變量的定義和引用方法;掌握數(shù)據(jù)類型轉(zhuǎn)換的規(guī)則以及強制數(shù)據(jù)類型轉(zhuǎn)換的方法;掌握算術(shù)運算符、賦值運算符、逗號運算符的使用方法;理解運算符的優(yōu)先級和結(jié)合性的概念,記住所學(xué)的各種運算符的優(yōu)先級關(guān)系和結(jié)合性。學(xué)習(xí)目的數(shù)據(jù)類型、運算符與表達(dá)式變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)簡單數(shù)據(jù)類型與表示范圍c語言的運算符與表達(dá)式算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符c數(shù)據(jù)類型構(gòu)造類型指針類型空類型void定義類型typedef枚舉類型enum數(shù)組結(jié)構(gòu)體struct共用體union基本類型字符類型c

4、har浮點型單精度型float雙精度型double整 型短整型short長整型long整型int數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進(jìn)行的操作本章所介紹的數(shù)據(jù)類型c語言的數(shù)據(jù)類型變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符變量與常量格式:#define 符號常量 常量例:#define num 20 #define pi 3.1415926 常量:程序運行時其值不能改變的量(即常數(shù))常量的分類 直接常量( 值常量)整型常量: 10、15、-

5、10、-30實型常量: 12.5、 30.0、-1.5字符常量: a、b、c字符串常量: “sum”、“a”、“123”符號常量:用標(biāo)識符來代表常量。 運行結(jié)果:total = 300行尾不能有分號define前面一定要有#符號常量名最好使用大寫符號常量名最好有意義 #include #define price 30void main ( ) int num, total; num = 10; total = num * price; printf (total = %d, total);變量與常量/* this is the second c program */#include void

6、main ( ) int x, y, z; scanf (%d%d, &x, &y ); z = x + y; printf ( sum is %dn, z);數(shù)據(jù)類型名定義的變量名,以“,”分隔變量與常量格式 :數(shù)據(jù)類型 變量名1,變量名2,變量名n;int x, y, z;float radius, length, area; char ch;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識符變量:程序運行時其值可以被改變的量 變量的兩要素 :變量名 、變量值變量與常量如何衡量變量所占空間大???bit,中文叫法:位byte,中文叫法:字節(jié)kilobyte(kb),中文叫法: kmegabyte(mb)

7、,中文叫法:兆gigabyte(gb),中文叫法:gterabyte(tb),中文叫法:t1 tb = 1,024 gb1 gb = 1,024 mb1 mb = 1,024 kb1 kb = 1,024 b1 b = 8 b變量與常量 一個位有多大?只能是“0”或者“1”,二進(jìn)制 一個字節(jié)有多大?可以表示數(shù)字0255之間的整數(shù)保存一個字符(英文字母、數(shù)字、符號)ascii(美國標(biāo)準(zhǔn)信息交換碼)編碼,見附錄a變量與常量變量的初始化:定義時賦初始值例: int a = 2, b, c = 4; float data = 3.67; char ch = a; int x = 1, y = 1, z

8、 = 1; int x = y = z = 1;編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元地址short int a=1, b=-3, c;abc2字節(jié)2字節(jié)2字節(jié)地址地址內(nèi)存.1-3隨機數(shù)例1: int student; stadent = 19; /undefined symbol statent in function main 例2: float a,b,c; c = a % b; /illegal use of floating point in function main 變量的使用:先定義,后賦值變量與常量void main ( ) int a, b = 2; a = 1;

9、float data; data = (a + b) * 1.2; printf(“data=%fn”,data);void main ( ) int a, b = 2; float data; a = 1; data = (a + b) * 1.2; printf (“data=%fn”, data);變量定義可執(zhí)行語句變量定義位置:一般放在函數(shù)開頭變量與常量變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符整型數(shù)據(jù)整型常量十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號表示,最高位非零 .

10、 如:123,-456八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如:0123,011十六進(jìn)制整數(shù):由0 x或0x開頭,后跟09,af,af表示.如0 x123,0xff 定義整數(shù)的符號常量 #define num1 20 /十進(jìn)制數(shù)20 #define num2 020 /八進(jìn)制數(shù)(十進(jìn)制16) #define num3 0 x2a /十六進(jìn)制數(shù)(十進(jìn)制42)思考題:下列整型常量哪些是非法的? 012,ox7a,0,078,0 x5ac,-0 xffff,0034,7b。首字符不能是字母o 八進(jìn)制數(shù)中不能有數(shù)字8 十進(jìn)制數(shù)中不能有字母b 正數(shù)n的補碼n補與原碼n原和反碼n反相同。對于負(fù)數(shù)n,

11、其補碼n補的的符號為1,數(shù)值部分為 反碼數(shù)值加1。在補碼表示法中,0的表示形式是唯一的,即: 0補 0000 或 0.000 0補 0000 或 0.000整型數(shù)據(jù)整數(shù)在內(nèi)存中的表示整數(shù)的數(shù)值在內(nèi)存中用補碼的形式存放。將上述求得的補碼的低位存放于內(nèi)存單元之中,就得到了該整數(shù)在內(nèi)存中的表示,內(nèi)存單元的最高位是符號位(0表示正,1表示負(fù))。整型數(shù)據(jù)整數(shù)在內(nèi)存中的表示 在tc3.0下,一個整數(shù)默認(rèn)情況下需要2個字節(jié)(16位)的內(nèi)存單元存放;而在vc6.0下,則需要4個字節(jié)(32位)。 例:十進(jìn)制整數(shù)+14(對于16位的內(nèi)存單元)符號位(表示正)0000111000000000低字節(jié)低字節(jié)高字節(jié)高字節(jié)

12、低地址低地址高地址高地址符號位符號位(+14)補 = 0000 0000 0000 1110 整型數(shù)據(jù)符號位(表示正)低字節(jié)高字節(jié)低地址高地址(+14)補 = 0000 0000 0000 0000 0000 0000 0000 1110 00001110000000000000000000000000符號位例:十進(jìn)制整數(shù)+14(對于32位的內(nèi)存單元)整型數(shù)據(jù)符號位(表示負(fù))1111001011111111低字節(jié)高字節(jié)低地址高地址符號位(+14)補 = 0000 0000 0000 1110 (-14)補 = 1111 1111 1111 0010 按位求反,末位加1 例:十進(jìn)制整數(shù)-14(對

13、于16位的內(nèi)存單元)整型數(shù)據(jù)符號位(表示負(fù))低字節(jié)高字節(jié)低地址高地址(+14)補 = 0000 0000 0000 0000 0000 0000 0000 1110 11110010111111111111111111111111符號位(-14)補 = 1111 1111 1111 1111 1111 1111 1111 0010 按位求反,末位加1 例:十進(jìn)制整數(shù)-14(對于32位的內(nèi)存單元)整型數(shù)據(jù)符號位(表示負(fù))(+65537)補 = 01 0000 0000 0000 0001 (-65537)補 = 10 1111 1111 1111 1111 按位求反,末位加1 111111111

14、1111111低地址高地址低字節(jié)高字節(jié)符號位真值為:-1,不是-65537!例:十進(jìn)制整數(shù)-65537(對于16位的內(nèi)存單元)整型數(shù)據(jù)符號位(表示負(fù))低字節(jié)高字節(jié)低地址高地址(+65537)補 = 0000 0000 0000 0001 0000 0000 0000 0001 11111111111111111111111011111111符號位,表示負(fù)(-65537)補 = 1111 1111 1111 1110 1111 1111 1111 1111 按位求反,末位加1 真值為:-65537!例:十進(jìn)制整數(shù)-65537(對于32位的內(nèi)存單元)為什么-65537這個數(shù)在16位內(nèi)存單元中的表示

15、與在32位內(nèi)存單元中的表示不相同呢? 這主要是因為-65537這個數(shù)超出了16位內(nèi)存單元表示數(shù)的范圍,所以實際存儲的值(-1)與要表示的值(-65537)不同,但-65537并沒有超出了32位內(nèi)存單元表示數(shù)的范圍,所以實際存儲的值就是其本身。因此,我們在c語言中對數(shù)據(jù)處理時必須要注意數(shù)據(jù)的表示范圍,以免引起不必要的錯誤。整型數(shù)據(jù)例 補碼:11111001 取反:10000110 加1:10000111=-7負(fù)數(shù)補碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動,其余位取反加1整型數(shù)據(jù)考慮補碼:1000000000000000、1111111111111111的十進(jìn)制數(shù)負(fù)數(shù)補碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動,其余位取反

16、,得到 十進(jìn)制數(shù)減1整型數(shù)據(jù)整型變量定義:int 變量名, 變量名2,變量名n;int必須小寫至少一個空格必須為合法的標(biāo)識符以逗號,分隔 以分號;結(jié)尾定義時可以賦初值,方法:在變量名后面增加“= 數(shù)值”例: int a; int x, y, z; int m = 2, y = -3; 當(dāng)程序中定義了一個變量時,計算機會為這個變量分配一個相應(yīng)大小的內(nèi)存單元。因此,這個變量是有值的,它的值就是對應(yīng)內(nèi)存單元的值。如果定義時沒有賦初值,則這個值程序員是無法預(yù)知的。 整型數(shù)據(jù)整型變量的分類控制變量是否有符號:signed(有符號)和unsigned(無符號)控制整型變量的值域范圍 :short(短)和l

17、ong(長)。在int前可以根據(jù)需要可加上修飾符6種整型變量有符號基本整型無符號基本整型有符號短整型無符號短整型有符號長整型無符號長整型signed intunsigned intsigned short intunsigned short intsigned long intunsigned long int整型數(shù)據(jù)1111111011111111低地址高地址低字節(jié)高字節(jié)符號位變量a占用的內(nèi)存單元(2字節(jié))unsigned int a = -2; /定義一個無符號整型變量a,并賦初值-2占用的內(nèi)存單元字節(jié)數(shù)同int類型。無符號基本型(unsigned int)數(shù)據(jù)位有符號基本型(int)in

18、t a = -2; /定義一個有符號整型變量a,并賦初值-2tc下,變量占2個字節(jié)(16位)的內(nèi)存單元;vc6.0下,變量占4個字節(jié)(32位)的內(nèi)存單元。其值為:65534 !整型數(shù)據(jù)有符號短整型(short int或short)short int a = 2; /定義一個有符號短整型變量a,并賦初值2 或short a = 2;占用的內(nèi)存單元為2個字節(jié),無論是tc還是vc。無符號短整型(unsigned short int或unsigned short)unsigned short int a = 2; /定義一個無符號短整型變量a,并賦初值2 或unsigned short a = 2;占

19、用的內(nèi)存單元字節(jié)數(shù)同short類型。整型數(shù)據(jù)有符號長整型(long int或long)long int a = 234567; /定義一個有符號長整型變量a,并賦初值234567 或long a = 234567;占用的內(nèi)存單元為4個字節(jié),無論是tc還是vc。 無符號長整型(unsigned long int或unsigned long)unsigned long int a = 2; /定義一個無符號長整型變量a,并賦初值2 或unsigned long a = 2;占用的內(nèi)存單元字節(jié)數(shù)同long類型。整型數(shù)據(jù)例 各種整型變量的定義#include #define sum 65535void

20、 main ( ) int a, b = 20; unsigned int c = 0 xff; long d; a = sum; d = 301; printf(a = %dn, a); printf(b = %dn, b); printf(c = %dn, c); printf(“d = %dn”, d);/文件包含,頭文件說明 /定義符號常量sum,值為65535 /定義兩個int型變量a和b,b賦初值20 /定義無符號整型變量c,并賦初值0 xff /定義長整型變量d /對a賦值為sum,這時a的值是65535 /對d賦值為301 /以有符號十進(jìn)制形式(%d)顯示a的值 /以有符號十進(jìn)

21、制形式(“%d”)顯示b的值 /以有符號十進(jìn)制形式(%d)顯示c的值 /以有符號十進(jìn)制形式(%d)顯示d的值 變量定義部分語句執(zhí)行部分在tc3.0下運行結(jié)果: a = -1 b = 20 c = 255 d = 301在vc6.0下運行結(jié)果: a = 65535 b = 20 c = 255 d = 301對于16位的有符號整型變量a來說,因6 5 5 3 5 在 內(nèi) 存 中 的 形 式 為1111111111111111,最高位為1表示負(fù),則其所對應(yīng)的十進(jìn)制數(shù)就為-1。整型數(shù)據(jù)6種整型變量有符號基本整型無符號基本整型有符號短整型無符號短整型有符號長整型無符號長整型signed intunsi

22、gned intsigned short intunsigned short intsigned long intunsigned long int問題整型常量是否也有這些分類?將整型常量賦值給各種類別的整型變量時如何 做到類型匹配?如果整型常量的值位于-3276832767之間,c語言認(rèn)為它是int型常 量,它可以賦值給int型和long int 型變量;如果整型常量的值位于-21474836482147483647之間,c語言認(rèn)為它 是long型常量,它可以賦值給long int 型變量。short int與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,因此可以相互賦值。 整型常量后加字母l或l,認(rèn)

23、為它是long int 型常量。比如123l、45l、 0xafl。 無符號數(shù)也可用后綴表示,整型常數(shù)的無符號數(shù)的后綴為u或u。例 如:358u, 0 x38au,235lu 均為無符號數(shù)。變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符浮點型數(shù)據(jù)浮點型常量其中:a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù),都不可缺少。其可表示為a10n 十進(jìn)制小數(shù)形式:由數(shù)字09和小數(shù)點組成 。如:0.123, 5.6, 12.4指數(shù)形式:由十進(jìn)制數(shù),加階碼標(biāo)志e或e以及階碼 (只能為整數(shù),可以帶符號)

24、組成。一般形式為:aen如:123.456e2, 12.3456e3, 1.23456e4規(guī)范化指數(shù)形式合法的實數(shù)表示: 2.1e5 表示2.1105,3.7e-2 表示3.710-2。 非法的實數(shù)表示: 345(無小數(shù)點) ,e7(階碼標(biāo)志e之前無數(shù)字) , -5(無階碼標(biāo)志) ,50.-e3(負(fù)號位置不對) 浮點型變量單精度實型(float) float f , g; 這種定義的變量在內(nèi)存中占4個字節(jié)(32位)的存儲單元。雙精度實型(double) double x, y; 這種定義的變量在內(nèi)存中占8個字節(jié)(64位)的存儲單元。 長雙精度實型(long double) long doubl

25、e x, y; 這種定義的變量在內(nèi)存中占16個字節(jié)(128位)的存儲單元。 浮點型數(shù)據(jù)浮點型數(shù)據(jù)浮點型變量long doubledoublefloat類型位數(shù)6432128有效數(shù)字?jǐn)?shù)值范圍6715161819-3.4*10-38 3.4*1038-1.7*10-308 1.7*10308-1.2*10-4932 1.2*104932注意:三種實數(shù)類型中,其精度是 float double long double;long float實際上就是double,因此,沒有l(wèi)ong float類型;浮點型數(shù)據(jù)浮點型數(shù)據(jù)在內(nèi)存中的表示方法+1. 3 1 4 1 5 9符號位小數(shù)部分指數(shù).314159*1

26、01=3.14159浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位),按照指數(shù)形式存儲。在4個字節(jié)中,不少c編譯系統(tǒng)以24位表示小數(shù)部分(包括符號),以8位表示指數(shù)部分。小數(shù)部分占位越多,數(shù)的有效數(shù)字越多,指數(shù)部分占位越多,表示數(shù)值范圍越大。 浮點型數(shù)據(jù)#include void main ( ) float a; /定義float型變量a double b, c; /定義double型變量b和c a = 123.45678; /對變量a賦值為123.45678 b = a; /將變量a賦給變量b c = 123.45678; /對變量c賦值為123.45678 printf(a = %f b =

27、%lf c = %lfn, a, b, c);運行結(jié)果: float型變量最多只能精確表示7個數(shù)字,因此顯示a的值時,只能有效顯示前面7個數(shù)字即123.4567,最后追加一位數(shù)字6是隨機的 。變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符字符常量的值:該字符的ascii碼值轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示字符型數(shù)據(jù)字符型常量定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符. 如 a a ? n 101如 a65, a97, 048 , n10轉(zhuǎn)義字符及其含義轉(zhuǎn)義

28、字符含義nrdddtbfxhh換行回車單引號3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符含義轉(zhuǎn)義字符如 101 -a 012 -n 376 - x61 -a 060 -0 483 -()字符型數(shù)據(jù)例: 轉(zhuǎn)義字符舉例 #include void main ( ) printf (101 x42 cn); printf (i say:how are you?n); printf (c programn); printf (visual c); printf (anbcndefn);運行結(jié)果:(屏幕顯示)a b ci say:”how are you?”c progra

29、mvisual canbcdef注意:轉(zhuǎn)義字符實際上作為字符來處理,但如果反斜線與 后面的字符不構(gòu)成轉(zhuǎn)義字符,則反斜線不起轉(zhuǎn)義作 用將被忽略。字符型數(shù)據(jù)字符型數(shù)據(jù)類型符是char(字符character)在內(nèi)存中占1個字節(jié)(8位) 字符變量存放字符ascii碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運算存在有符號和無符號之分。默認(rèn)情況下為有符號 例: char ch; unsigned char c = b;例: a = d; / a = 68; x = a + 5; / x = 65 + 5; s = ! + g / s = 33 + 71;字符型變量字符型數(shù)據(jù)字符串型常量例: 字符串“hello”

30、在內(nèi)存中00 x4f0 x4c0 x4c0 x450 x48低地址高地址字符串結(jié)束標(biāo)志例: 空串 “”0定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個 0 作為字符 串結(jié)束標(biāo)志字符型數(shù)據(jù)字符常量與字符串常量不同0 x41 0 x41 0例 a“a”char ch;ch = “a”; char ch; ch = a; 字符常量由單引號括起來,字符串常量由雙引號括起來。 字符常量只能是單個字符,字符串常量可以是一個或多個字符。 可以把字符常量賦予字符變量,但不能把字符串常量賦予字符變量,c語言中沒有字符串變量。 字符常量占1個字節(jié)的內(nèi)存空間,字符串常量占的內(nèi)存空間等于 字符串中

31、的字節(jié)數(shù)加1。簡單數(shù)據(jù)類型的表示范圍 類型符號關(guān)鍵字占字節(jié)數(shù)數(shù)的表示范圍整型有(signed)int 2-3276832767(signed)short2-3276832767(signed)long4-21474836482147483647無unsigned int2065535unsigned short2065535unsigned long404294967295浮點型有float4絕對值10-381038有double8絕對值10-30810308有l(wèi)ong double16絕對值10-4932104932字符型有char1-128127無unsigned char10255變量與

32、常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符c語言的運算符與表達(dá)式 變量用來存放數(shù)據(jù),運算符則用來處理數(shù)據(jù)。用運算符將變量和常量連接起來的符合c語法規(guī)則的式子被稱為表達(dá)式。 運算符的分類: 單目運算符:只帶一個操作數(shù)的運算符。如:+、-運算符。 雙目運算符:帶兩個操作數(shù)的運算符。如:+、-運算符。 三目運算符:帶三個操作數(shù)的運算符。如:?運算符。學(xué)習(xí)運算符時應(yīng)注意: 運算符的功能:該運算符主要用于做什么運算。與運算量關(guān)系:要求運算量的個數(shù)及運算量的類型。運算符的優(yōu)先級:表達(dá)式

33、中包含多個不同運算符時運算符運算的先 后次序。運算符的結(jié)合性:同級別運算符的運算順序(指左結(jié)合性還是右結(jié) 合性)。運算結(jié)果的類型:表達(dá)式運算后最終所得到的值的類型。c運算符算術(shù)運算符:(+ - * / % + -)關(guān)系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節(jié)數(shù) :(sizeof)強制類型轉(zhuǎn)換:(類型)分量運算符:(. -)下標(biāo)運算符:()其它 :(( ) -)c語言的運算符與表達(dá)式算術(shù)運算符與算術(shù)表達(dá)式基本算術(shù)運算符: + - * / %l 結(jié)合方向:從左向右l 優(yōu)先級

34、: - -* / % - + -說明:l “-”可為單目運算符時,右結(jié)合性l 兩整數(shù)相除,結(jié)果為整數(shù)l %要求兩側(cè)均為整型數(shù)據(jù)例: 5 / 2 = -5 / 2.0 =例: 5 % 2 = -5 % 2 = 1 % 10 = 5 % 1 = 5.5 % 2 2-2.51-110算術(shù)表達(dá)式:表達(dá)式中的運算符都是算術(shù)運算符的表達(dá)式。算術(shù)運算符與算術(shù)表達(dá)式例: j = 3; k = +j; j = 3; k = j+; j = 3; printf (“%d”, +j); j = 3; printf(“%d”, j+); a = 3; b = 5; c = (+a) * b; a = 3; b = 5

35、; c = (a+) * b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4自增、自減運算符+ -作用:使變量值加1或減1種類: 前置 +i, -i (先執(zhí)行i=i+1或i=i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i=i+1或i=i-1)算術(shù)運算符與算術(shù)表達(dá)式自增、自減運算符注意事項:+和-運算符只能用于變量,不能用于常量和表達(dá)式。因為 +和-蘊含著賦值操作。 例如:5+、-(a+b)都是非法的表達(dá)式。負(fù)號運算符、+、-和強制類型轉(zhuǎn)換運算符的優(yōu)先級相同, 當(dāng)這些運算符連用時,按照從右向左的順序計算,即具有右 結(jié)合性。兩個和之間不能有空格。在表

36、達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運算時,很容 易出錯,所以最好避免這種用法。 例如:+i+是非法的。自增、自減運算,常用于循環(huán)語句中,使循環(huán)控制變變量加 (或減)-,以及指針變量中,使指針指向下(或上)一個 地址。算術(shù)運算符與算術(shù)表達(dá)式例:例: int p, i = 2, j = 3; p = -i+; p = ? i = ? p = i+j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+i+; p = ? i = ? p = +i+(+i); p = ? i = ? 變量與

37、常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符簡單的賦值運算符(“”,雙目運算符,右結(jié)合)格式:變量 = 常量或變量或表達(dá)式功能:將右邊常量或變量或表達(dá)式的值賦給左邊變量 例如: int x, y, z; x = 20; y = x; z = x + y;賦值運算符與賦值表達(dá)式a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3復(fù)合賦值運算符(雙目運算符,右結(jié)合) 種類:+= -= *= /= %= = = &= = |=含義: exp1 op= exp2 exp

38、1 = exp1 op exp2賦值表達(dá)式: 由賦值運算符或復(fù)合賦值運算符,將一個變量和一個表達(dá)式連接起來的表達(dá)式,稱為賦值表達(dá)式。格式:變量 (復(fù)合)賦值運算符 表達(dá)式賦值運算符與賦值表達(dá)式例如: a = 20 a = 4*5 b+=3賦值語句:例如: x = 8; a = b = c = 5; 賦值表達(dá)式在其后面加分號就構(gòu)成了賦值語句。賦值運算符及賦值表達(dá)式的使用多個變量連續(xù)賦值例如: a = b = c = 10; a = (b = (c = 10); 結(jié)果:a、b、c 的值都為10賦值表達(dá)式的嵌套例如 a=12; a+=a-=a*a a=a+(a=a-(a*a)結(jié)果:a=-264賦值運

39、算符與賦值表達(dá)式賦值運算符與賦值表達(dá)式賦值語句“=”左邊必須是變量名或?qū)?yīng)某特定內(nèi)存單元 的表達(dá)式不能是常量或其它表達(dá)式。 例如:30 = a; b + 2 = 5; 都是錯誤的。賦值語句中的“=”表示賦值,不是代數(shù)中相等的意思。 要表示相等的意思則應(yīng)用關(guān)系運算符“=”表示,二者切勿混淆!注意:變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符不同數(shù)據(jù)類型的轉(zhuǎn)換自動轉(zhuǎn)換強制轉(zhuǎn)換-通過強制類型轉(zhuǎn)換運算符轉(zhuǎn)換運算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運算時賦值轉(zhuǎn)換-把一個值賦給

40、與其類型不同的變量時輸出轉(zhuǎn)換-輸出時轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換-實參與形參類型不一致時轉(zhuǎn)換強制類型轉(zhuǎn)換運算符自動轉(zhuǎn)換-運算轉(zhuǎn)換:doublefloatlongunsignedintchar,short低高必定的轉(zhuǎn)換運算對象類型不同時轉(zhuǎn)換例: char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/m例: int i; float f; double

41、 d; long m;強制類型轉(zhuǎn)換運算符(1) 短長度的數(shù)據(jù)類型 長長度的數(shù)據(jù)類型方法:直接將無符號短長度的數(shù)據(jù)類型的數(shù)據(jù)作為長長度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,長長度的數(shù)據(jù)類型數(shù)據(jù)的高位部分補零。 無符號短長度的數(shù)據(jù)類型 無符號或有符號長長度的數(shù)據(jù)類型例如: unsigned char ch = 0 xfc; unsigned int a = 0 xff00; /假設(shè)int數(shù)據(jù)為16位 int b; unsigned long u; b = ch; /b的值將是0 x00fc u = a; /u的值將是0 x0000ff00自動轉(zhuǎn)換-賦值轉(zhuǎn)換:(1) 短長度的數(shù)據(jù)類型 長長度的數(shù)據(jù)類型方法:直接

42、將有符號短長度的數(shù)據(jù)類型的數(shù)據(jù)作為長長度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,然后將低位部分的最高位(即有符號短長度數(shù)據(jù)的符號位)向長長度的數(shù)據(jù)類型數(shù)據(jù)的高位部分?jǐn)U展。 有符號短長度的數(shù)據(jù)類型 無符號或有符號長長度的數(shù)據(jù)類型強制類型轉(zhuǎn)換運算符例如: char ch = 2; int a = -2; int b; unsigned long u; b = ch; /b的值將是2 u = a; /u的值將是0 xfffffffe自動轉(zhuǎn)換-賦值轉(zhuǎn)換:(2) 長長度的數(shù)據(jù)類型 短長度的數(shù)據(jù)類型方法:直接截取長長度的數(shù)據(jù)類型數(shù)據(jù)的低位部分(長度為短長度的數(shù)據(jù)類型的長度)作為短長度數(shù)據(jù)類型的數(shù)據(jù)。 例如: int a

43、 = -32768; /假設(shè)int數(shù)據(jù)為16位 unsigned long b = 0 xffffaa00; char ch; int c; ch = a; /ch的值將是0 c = b; /c的值將是0 xaa00強制類型轉(zhuǎn)換運算符自動轉(zhuǎn)換-賦值轉(zhuǎn)換:(3) 長度相同的數(shù)據(jù)類型轉(zhuǎn)換方法:數(shù)據(jù)按照原樣復(fù)制即可。 例如: int a = 0 xff00; unsigned int b = a; /b的值將是0 xff00強制類型轉(zhuǎn)換運算符自動轉(zhuǎn)換-賦值轉(zhuǎn)換:強制轉(zhuǎn)換-強制類型轉(zhuǎn)換運算符:強制類型轉(zhuǎn)換運算符一般形式:(類型說明符) (表達(dá)式)功能:把表達(dá)式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型

44、。其 中,(類型說明符)是強制類型轉(zhuǎn)換符,它的優(yōu)先級比較高。例: float x = 3.5, y = 2.1, z; int a; a = (int)(x+y); /結(jié)果為5 z = (int)x+y; /結(jié)果為5.100000 z = (double)(3/2); /結(jié)果為1.000000 a = (int)3.6; /結(jié)果為3精度損失問題較高類型向較低類型轉(zhuǎn)換時可能發(fā)生強制類型轉(zhuǎn)換運算符在使用強制轉(zhuǎn)換時應(yīng)注意以下問題:類型說明符和表達(dá)式都必須加括號。例如:把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與 y相加了。無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運算的

45、需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。 例如:(double)a 只是將變量a的值轉(zhuǎn)換成一個double型的中間 量,其數(shù)據(jù)類型并未轉(zhuǎn)換成double型。變量與常量整型數(shù)據(jù)c語言的數(shù)據(jù)類型浮點型數(shù)據(jù)數(shù)據(jù)類型、運算符與表達(dá)式學(xué)習(xí)內(nèi)容字符型數(shù)據(jù)算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算符與逗號表達(dá)式強制類型轉(zhuǎn)換運算符逗號運算符:,逗號表達(dá)式:用逗號連接起來的表達(dá)式。一般形式:表達(dá)式1,表達(dá)式2,表達(dá)式k優(yōu)先級:優(yōu)先級最低。結(jié)合性:左結(jié)合性 。即逗號表達(dá)式的求值順序是從左向右依 此計算用逗號分隔的各表達(dá)式的值。逗號表達(dá)式的值:最后一個表達(dá)式的值就是整

46、個逗號表達(dá)式的值。 用途:常用于循環(huán)for語句中。例如: 逗號運算符與逗號表達(dá)式例: a = 3 * 5, a * 4 a = 3 * 5, a * 4, a + 5例: 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); /a=15,表達(dá)式值60/a=15,表達(dá)式值20/賦值表達(dá)式,表達(dá)式值18,x=18/逗號表達(dá)式,表達(dá)式值18,x=3/1,2,3/3,2,3例例:#include void

47、main ( ) int x, y = 7; float z = 4; x = (y = y + 6, y / z); printf (x = %dn, x);運行結(jié)果:x = 3逗號運算符與逗號表達(dá)式其它運算符與表達(dá)式關(guān)系運算符與關(guān)系表達(dá)式邏輯運算符與邏輯表達(dá)式位運算符與位運算表達(dá)式 條件運算符與條件表達(dá)式關(guān)系運算符與關(guān)系表達(dá)式關(guān)系運算符(自左向右)關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達(dá)式值1/表達(dá)式值1/表達(dá)式值0/d=1/f=0種類: = !=關(guān)系運算注意:關(guān)系運算符與關(guān)系表達(dá)式例

48、5278在c中是允許的, 值為 0例 a0 結(jié)果為 a100 結(jié)果為10例 注意區(qū)分“=”與“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例 應(yīng)避免對實數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)3&2|83)&2|(8(4-(!0) 值為1邏輯運算符與邏輯表達(dá)式位運算符與位運算表達(dá)式種類:按位與(&)、按位或(|)、按位取反()、 按位異或()、左移()。 位運算符:“與”運算:又稱為邏輯乘,c語言中用“&”來表示

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論