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

下載本文檔

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

文檔簡介

1、第2章 數(shù)據(jù)類型、運算符和表達(dá)式,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,2,目 錄,數(shù)據(jù)類型、常量和變量的定義運算符的種類、優(yōu)先級和結(jié)合方向表達(dá)式的類型和求值簡單的C程序設(shè)計及基本輸入輸出,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,3,C的數(shù)據(jù)類型 (Data Types),基本類型整型、字符型、浮點型(實型)、枚舉類型構(gòu)造類型數(shù)組類型、結(jié)構(gòu)體類型、共用體類型指針類型空類型,C語言

2、程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,4,數(shù)據(jù)類型、常量和變量,C的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的由前述數(shù)據(jù)類型可以構(gòu)造出更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)C語言的數(shù)據(jù)有常量和變量之分常量和變量都分別屬于某一數(shù)據(jù)類型程序中用到的所有數(shù)據(jù)都必須指定類型本章僅介紹基本數(shù)據(jù)類型,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,5,標(biāo)識符 (Identifier),標(biāo)識符變量名、符號常量名、函數(shù)名、類型名…標(biāo)識符命名規(guī)范由字母

3、、數(shù)字、下劃線(Underscore, '_')組成第一個字符必須為字母或下劃線C語言標(biāo)識符是大小寫敏感的標(biāo)識符的名稱一般應(yīng)具有一定的含義不要與C語言關(guān)鍵字(Keywords)重復(fù)一般不要使用以下劃線開頭的標(biāo)識符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,6,標(biāo)識符示例,正確的標(biāo)識符student、num1、_SUM、_1_2_3MyName、myname、my_name錯誤的標(biāo)識符roo

4、m3-1包含了其他字符(減號)2men以數(shù)字開頭long與關(guān)鍵字重復(fù)Mr.Zhu包含了其他字符(小數(shù)點),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,7,常量 (Constants),常量程序運行過程中,其值不能被改變的量例如:12、-6.7、'a'…符號常量 (Symbolic Constants)用一個標(biāo)識符代表的常量相當(dāng)于把標(biāo)識符用一個常量簡單替換下來標(biāo)識符是一個整體,不要

5、試圖拆開來替換含義清楚,一改全改習(xí)慣上符號常量名用大寫字母,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,8,常量示例,#define PRICE 30#define NUM 12void main(){ ... ... total = NUM * PRICE; total2 = 84 * PRICE2; printf("total=%d", total);

6、 ... ...},,,不會被替換,,=> total = 12 * 30;,,,,常量,,符號常量,,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,9,變量 (Variables),其值可以改變的量稱為變量變量有一個名字,即標(biāo)識符變量在存儲器中占據(jù)一定的存儲單元變量占據(jù)存儲空間的大小由其類型決定變量名表示存儲變量的存儲單元地址程序使用變量名表示這個變量所占據(jù)的存儲單元里存儲的數(shù)據(jù)的值變量要“先定義,后

7、使用”,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,10,變量的存儲,,變量名,存儲單元(地址),變量值,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,11,整型 (Integer),整型常量的表示方法整型變量整型數(shù)據(jù)在內(nèi)存中的存放形式整型變量的類型整型變量的定義整型數(shù)據(jù)的溢出整型常量的類型,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,12,整型常量的表示方法,十進(jìn)制 (Decimal)例

8、如,123、-456、0八進(jìn)制 (Octal)以0開頭,不得含有8或9例如,0123、-0456錯例,0138、-0912十六進(jìn)制 (Hexadecimal)以0x或0X開頭,用a~f或A~F表示10~15例如,0x123、-0X45、0x3AB、-0xabc,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,13,整型數(shù)據(jù)在內(nèi)存中的存放方式,二進(jìn)制形式舉例,int i=50; /*int類型占2字節(jié)*/補

9、碼 (Complement)正數(shù):與原碼一致,首位為0負(fù)數(shù):絕對值取反加一,首位為1零:各位全為0,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,14,補碼舉例,舉例int i=-50; /*int類型占2字節(jié)*/,50的原碼,-50的補碼,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,15,整型變量的分類,按占用存儲空間的大小劃分基本整型int短整型short [int]長整型long [i

10、nt]按有無符號劃分有符號[signed]無符號unsigned上述兩種分類方式組合,可得到6種類型,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,16,整數(shù)的長度,整數(shù)的類型與長度short:占2字節(jié)(16bit)long: 占4字節(jié)(32bit)int: 占2或4字節(jié)(16或32bit)2Bytes = short ≤ int ≤ long = 4Bytes若需要精確的長度,可選用short或l

11、ong舉例BC3.1:int長度為2Bytesgcc:int長度為4Bytes,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,17,有符號數(shù)與無符號數(shù),有符號數(shù)二進(jìn)制補碼表示,首位為符號位指定signed或缺省情況,即為有符號數(shù)無符號數(shù)沒有符號位,只能表示非負(fù)數(shù)無符號數(shù)類型必須指定為unsigned若把負(fù)數(shù)賦值給無符號數(shù),則把該負(fù)數(shù)的補碼當(dāng)作無符號數(shù)進(jìn)行處理,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符

12、和表達(dá)式,18,有符號數(shù)與無符號數(shù)舉例,void main(){ int i; unsigned j; i=j=-50; i=i/2; /*-25*/ j=j/2; /*32743*/},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,19,整型數(shù)據(jù)的取值范圍,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,20,整型變量的定義 (Definition),定義形式int a, b;unsig

13、ned c;long d;unsigned short e;變量的定義一般放在一個函數(shù)開頭的聲明部分,關(guān)于變量定義的具體內(nèi)容在以后相關(guān)章節(jié)里詳細(xì)介紹,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,21,整型變量的定義與使用舉例,void main(){ int a;/*定義有符號基本整型變量a*/ unsigned b;/*定義無符號基本整型變量b*/ long c;/*定義有符號長整型

14、變量c*/ a = -23;/*a的值為-23*/ b = 45;/*b的值為45*/ c = a + b;/*c的值為22*/},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,22,整型數(shù)據(jù)的溢出 (Overflow),溢出數(shù)據(jù)超出了變量能夠存儲的范圍,造成數(shù)據(jù)丟失或數(shù)值改變等舉例,void main(){ int a = 32767; a++; /*32768?*/

15、},32767的補碼,-32768的補碼,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,23,整型常量的類型,常量的類型后綴 (Suffix)l、L表示常量是一個長整型u、U表示常量是一個無符號整型數(shù)兩種后綴可以一起使用舉例123l長整型常數(shù)123456U無符號整型常數(shù)456789ul無符號長整型常數(shù)789101Lu無符號長整型常數(shù)101,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,24

16、,整型常量使用中的類型問題,對整型變量賦值常量的值不要超過變量的取值范圍直接使用常量帶有l(wèi)、L、u、U等后綴的整型常量一般用于函數(shù)調(diào)用不帶有后綴的整型常量的類型,是根據(jù)其數(shù)值大小所處的范圍來確定的,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,25,浮點型 (Floating Point),浮點型常量的表示方法浮點型變量浮點型數(shù)據(jù)在內(nèi)存中的存放形式浮點型變量的類型浮點型數(shù)據(jù)的舍入誤差浮點型常數(shù)的類型,C語言

17、程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,26,浮點型常量的表示方法,十進(jìn)制小數(shù)形式由符號、數(shù)字和小數(shù)點(必須)組成整數(shù)和小數(shù)部分都可省略,但不能同時省略舉例,12.3、-.123、123.、0.、.0指數(shù)形式由整數(shù)(或小數(shù))、e(或E)、整數(shù)順序組成e或E之前必須有數(shù)字,之后必須是整數(shù)舉例,123.4e-5表示123.4×10-5錯例,e1、12e、1.2e3.4、.e5、e,C語言程序設(shè)計 - 第2

18、章 數(shù)據(jù)類型、運算符和表達(dá)式,27,規(guī)范化指數(shù)形式,規(guī)范化指數(shù)形式類似于“科學(xué)計數(shù)法”e或E之前的小數(shù)中,小數(shù)點前面有且僅有一個非零數(shù)字舉例,123.456規(guī)范化形式,1.23456e2、1.23456E+002非規(guī)范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5…,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,28,浮點型數(shù)據(jù)在內(nèi)存中的存放方式,二進(jìn)

19、制規(guī)范化指數(shù)形式小數(shù)部分長度與能表示的精度有關(guān)指數(shù)部分長度與能表示的數(shù)值范圍有關(guān),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,29,幾個特殊的數(shù),無窮大 (Infinition)Inf舉例,1.0/0.0-Inf舉例,-1.0/0.0NaN (Not a Number)NaN舉例,sqrt(-1) /*開平方*/-NaN舉例,-sqrt(-1)零 (Zero)浮點數(shù)用特殊的形式表示零,C語言程序設(shè)計

20、 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,30,浮點型變量的類型,分類單精度 float雙精度 double長雙精度 long double長度和取值范圍,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,31,浮點型數(shù)據(jù)的舍入誤差,由于浮點型變量能夠表示的有效數(shù)字有限,將有效位以外的數(shù)字舍去造成誤差舉例,float a=123456.789e5, b;b = a + 20; /*b=12345678920?*/pr

21、intf("a=%f\nb=%f\n", a, b);,運行結(jié)果> a=12345678848.000000 b=12345678848.000000,思考:1.0/3*3=?,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,32,浮點型常量的類型,類型后綴f、F表示常量是一個單精度型浮點數(shù)l、L表示常量是一個長雙精度型浮點數(shù)無任何后綴的浮點型常量視作雙精度型對浮點型變量賦

22、值一個浮點型常量可以賦值給任何類型的浮點型變量根據(jù)變量類型截取常量的相應(yīng)有效數(shù)字注意防止出現(xiàn)溢出,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,33,字符型 (Character),字符型常量字符型變量字符型數(shù)據(jù)在內(nèi)存中的存放形式字符型數(shù)據(jù)的使用方法字符串常量,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,34,字符型常量,單引號括起來的一個字符舉例,'a'、'A'、&

23、#39;1'、'?'、'?'…錯例,'abc'、''、'我'…轉(zhuǎn)義字符以'\'開頭的特殊字符'\ddd' 1到3位8進(jìn)制數(shù)ASCII碼代表的字符'\xhh' 1到2位16進(jìn)制數(shù)ASCII碼代表的字符舉例,'\n'、'\t'、'\\'、'

24、\''、'\"'、'\123'、'\x3A'…,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,35,字符型變量,字符型變量只能存放一個字符定義與使用,void main(){ char c1, c2; /*定義字符型變量c1和c2*/ c1 = 'a'; /*c1的值為'a'*/ c2

25、 = '2'; /*c2的值為'2'*/},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,36,字符型數(shù)據(jù)在內(nèi)存中的存放形式,一個字符型數(shù)據(jù)占一個字節(jié)的空間字符型數(shù)據(jù)以其ASCII碼形式存放字符型數(shù)據(jù)的存放形式與只占一個字節(jié)長度的整型數(shù)據(jù)完全相同,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,37,字符型數(shù)據(jù)的使用方法,可以把字符型數(shù)據(jù)視作一種長度為1字節(jié)的整型數(shù)據(jù)

26、處理當(dāng)使用字符型數(shù)據(jù)時,與使用這個字符的ASCII碼(一個8位整數(shù))是完全一樣的字符型數(shù)據(jù)的用法與整型數(shù)據(jù)完全一樣,包括運算、賦值、輸入、輸出等字符型數(shù)據(jù)使用過程中,同樣需要注意溢出、符號等問題是字符還是整數(shù),只有在輸出時才有意義,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,38,字符型數(shù)據(jù)使用舉例,void main(){ char c; int i, j; c = 97;/*c =

27、'a'*/ i = c + 20;/*i = 117*/ j = '2';/*j = 50*/ printf("%c, %d\n", c, c); /*a, 97*/},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,39,字符型變量的符號,字符型變量與整型變量一樣,也分為有符號數(shù)與無符號數(shù)無符號字符unsigned char c;舉例,表示一

28、個班級的人數(shù) (<256)賦值和使用中需要注意的問題,與整型變量相同,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,40,字符串(String)常量,表示形式一對雙引號括起來的字符序列引號內(nèi)可以包括0個、1個或多個字符字符序列中的特殊字符用轉(zhuǎn)義字符表示舉例,"abc"、"a"、""、"?"、"我"舉例,&quo

29、t;12.4"、"$#*!"、"C:\\HOME"字符常量和字符串常量是不同類型的數(shù)據(jù)例如,'a'與"a"是不同的不能把一個字符串賦值給一個字符型變量,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,41,字符串在內(nèi)存中的存放方式,在內(nèi)存中每個字符按順序存放字符串結(jié)尾有一個空字符(ASCII=0, '\0')作為字符串結(jié)

30、束標(biāo)志字符串結(jié)束標(biāo)志'\0'是不能顯示的,在字符串常量中,也不用顯式寫出來舉例"TEST""""a",C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,42,變量賦初值 (Initialization),在定義變量的同時對變量賦值(初始化)舉例int a=1;/*相當(dāng)于 int a; a=1;*/int a, b=3;/*對b賦初值

31、,a沒有初值*/int b, c, a=b=c=100;/*對三個變量賦同樣的初值*/變量使用前,一般應(yīng)先對它賦值,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,43,各類數(shù)值型數(shù)據(jù)間的混合運算,整型、字符型、浮點型數(shù)據(jù)可混合運算混合運算時,不同類型的數(shù)據(jù)按照一定的規(guī)則先轉(zhuǎn)換為同一類型,然后再運算,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,44,運算符 (Operator),運算符的種類運算符的優(yōu)先級

32、運算符的結(jié)合方向,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,45,運算符的種類 (1),算術(shù)運算符+ - * / % ++ --關(guān)系運算符> = > ~ | ^ &賦值運算符= += -= *= /= %=>>= <<= &= ^= |=條件運算符?:,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,46,運算符的種類 (2),逗號運算符

33、,指針運算符* &求字節(jié)數(shù)運算符sizeof強制類型轉(zhuǎn)換運算符(type)分量運算符. ->下標(biāo)運算符[]其他運算符(),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,47,運算符的優(yōu)先級 (Precedence),優(yōu)先級運算符的運算次序按優(yōu)先級由高到低執(zhí)行可以用圓括號( )改變運算符的執(zhí)行次序舉例a+b*c–d/e/*先算乘除,后算加減*//*乘除比

34、加減優(yōu)先級高*/(a+b)*(c-d)/e/*先算加減,后算乘除*/,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,48,運算符的結(jié)合方向 (Associativity),結(jié)合方向當(dāng)一個操作數(shù)兩側(cè)的運算符優(yōu)先級相同時,運算次序按照結(jié)合方向的規(guī)定進(jìn)行舉例a+b-c/*+和-的結(jié)合方向都是從左向右*//*b先與+結(jié)合計算a+b,然后執(zhí)行減法*/a=b=1/*=的結(jié)合方向是從右向左,先計算b=1*/,C語言

35、程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,49,運算符的結(jié)合方向規(guī)則,單目運算符的結(jié)合方向都是“從右向左”!、~、++、--、+(正號)、-(負(fù)號)*(指針運算符)、&(地址運算符)sizeof、(type)賦值運算符的結(jié)合方向是“從右向左”三目運算符的結(jié)合方向是“從右向左”唯一的三目運算符:條件運算符?:其他運算符的結(jié)合方向都是“從左向右”,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,50,優(yōu)

36、先級與結(jié)合方向總結(jié),不同優(yōu)先級的運算符,運算次序按優(yōu)先級由高到低執(zhí)行同一優(yōu)先級的運算符,運算次序按結(jié)合方向的規(guī)定執(zhí)行可以使用圓括號( )明確運算次序圓括號()具有最高的優(yōu)先級,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,51,表達(dá)式 (Expression),表達(dá)式的概念表達(dá)式的類型表達(dá)式求值算術(shù)運算符和算術(shù)表達(dá)式賦值運算符和賦值表達(dá)式逗號運算符和逗號表達(dá)式,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表

37、達(dá)式,52,表達(dá)式的概念,表達(dá)式用運算符把操作數(shù)連接起來,并符合C語言語法規(guī)則的式子操作數(shù)包括常量、變量、函數(shù)調(diào)用、表達(dá)式廣義上,常量、變量、函數(shù)調(diào)用也可以看作屬于表達(dá)式的范疇舉例a+2.5*b-6/c+'z'-max(x,y)!((a<1e-6)&&(b==(c+sqrt(f)))),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,53,表達(dá)式的類型,表達(dá)式的類型表達(dá)式的值的

38、類型取決于操作數(shù)的類型以及它們所做的運算舉例a+2.5*b-6/c+'z'/*混合類型算術(shù)運算,值為double類型*/!((a<1e-6)&&(b==(c+sqrt(f))))/*邏輯判斷的結(jié)果是邏輯值*//*C語言用整型表示邏輯類型*/,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,54,算術(shù)運算符 (Arithmetic Operators),基本算術(shù)運算符+

39、 - * / %強制類型轉(zhuǎn)換運算符(類型名)自增、自減運算符++ --,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,55,基本算術(shù)運算符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,56,基本算術(shù)運算符的特性,優(yōu)先級 (從高到低)+ (正號) – (負(fù)號)* / % + (加) – (減)結(jié)合方向+ (正號) – (負(fù)號):從右向左+ (加) – (減) * / %:從左向右,C語言程

40、序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,57,基本算術(shù)運算符的說明,兩個整數(shù)相除,結(jié)果也為整數(shù)直接舍去商的小數(shù)部分,而不會“四舍五入”負(fù)數(shù)整數(shù)除法,結(jié)果的舍入方向沒有規(guī)定如果需要得到精確的運算結(jié)果,可以把其中一個操作數(shù)轉(zhuǎn)換為浮點數(shù)舉例,5/3(=1)、5.0/3(=1.66666…)舉例,-5/3(=-1?-2?)模運算符的兩個操作數(shù)都必須是整數(shù)負(fù)數(shù)模運算結(jié)果的符號沒有規(guī)定舉例,5%3(=2)、-5%3(=-2?

41、1?),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,58,強制類型轉(zhuǎn)換運算符,形式(類型名)操作數(shù)說明強制把表達(dá)式轉(zhuǎn)換成所需的類型強制類型轉(zhuǎn)換運算符的優(yōu)先級比較高強制類型轉(zhuǎn)換不會改變操作數(shù)自身的類型,只是得到一個所需類型的中間量多用于自動類型轉(zhuǎn)換不能實現(xiàn)的目的強制類型轉(zhuǎn)換后,會影響C語言做類型檢查,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,59,強制類型轉(zhuǎn)換舉例,float x=2.8, y=3.

42、7, z;int a, b, c, d=5, e=2;a=(int)x+y;/* a=5, 2+3.7 => 5 */b=(int)(x+y);/* b=6, (int)(6.5) */c=(int)x;printf("x=%f, c=%d\n", x, c);/* x=2.800000, c=2 */z=(float)d/e;/* z=2.5 */,C語言程序設(shè)計 - 第2章 數(shù)

43、據(jù)類型、運算符和表達(dá)式,60,自增、自減運算符,形式++i, --i使用i之前,先使i的值加/減1i++, i--使用i之后,再使i的值加/減1說明++i和--i的值是加/減1之后i的值i++和i--的值是加/減1之前i的值++和--只能用于變量,不能用于常量和表達(dá)式++和--的結(jié)合方向是“自右向左”,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,61,自增、自減運算符舉例,int i=3, j, a, b=

44、1, c=2;j = ++i;/* i=i+1, j=i, i=4, j=4 */j = i++;/* j=i, i=i+1, i=5, j=4 */j = -i++;/* -(i++), i=6, j=-5 */j = i++*2;/* (i++)*2, i=7, j=12 */a = (b+c)++;/* 非法!!! */a = 34++;/* 非法!!! */j = ++i++;/* 非法

45、!!! */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,62,有關(guān)表達(dá)式使用的問題,表達(dá)式中子表達(dá)式的求值順序沒有規(guī)定i=3; j=(i++)+(i++)+(i++);/* j=9? 12? */C編譯程序自左向右盡可能多的將若干字符組合成一個運算符、標(biāo)識符、關(guān)鍵字i+++j /* (i++)+j? i+(++j)? */調(diào)用函數(shù)時,實參的求值順序沒有規(guī)定i=3; printf("%d,%d\n&q

46、uot;, i, i++);/* 3,3? 4,3? */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,63,賦值運算符 (Assignment Operators),賦值運算符 =把右側(cè)表達(dá)式的值賦給左側(cè)的變量一般情況下,賦值運算符左側(cè)只能是變量賦值運算符的優(yōu)先級較低,“自右向左”結(jié)合運算符兩側(cè)類型不一致時,要進(jìn)行類型轉(zhuǎn)換注意“賦值”與“等于”的區(qū)別,例如i=i+2;復(fù)合賦值運算符=前加上算術(shù)運算符或位

47、運算符,如+=、|=舉例,z*=x+y;/* z=z*(x+y); */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,64,賦值表達(dá)式,賦值表達(dá)式賦值表達(dá)式的值就是所賦的值運算符右側(cè)的表達(dá)式可以是一個賦值表達(dá)式舉例a=5; /*表達(dá)式的值為5*/a=b=3; /*a=(b=3)*/a=b=c=1; /*a=(b=(c=1))*/a=(b=4)+(c=3);/*b=

48、4, c=3, a=7*/,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,65,逗號運算符,逗號運算符 ,exp1, exp2逗號運算符的優(yōu)先級最低,“自左向右”結(jié)合逗號表達(dá)式的值是exp2的值exp1和exp2都可以又是“逗號表達(dá)式”把多個表達(dá)式組合成一個表達(dá)式使用舉例x=(a=3, 6*a) /* a=3, x=18 */x=a=3, 6*a /* a=3, x=3 */,C語言程序設(shè)計 - 第2章

49、 數(shù)據(jù)類型、運算符和表達(dá)式,66,基本輸入輸出,頭文件#include 輸入輸出函數(shù)字符輸出函數(shù)putchar字符輸入函數(shù)getchar格式輸出函數(shù)printf格式輸入函數(shù)scanf字符串輸出函數(shù)puts字符串輸入函數(shù)gets,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,67,字符輸出函數(shù)putchar,函數(shù)說明int putchar(int c);輸出一個字符到標(biāo)準(zhǔn)輸出設(shè)備參數(shù)說明int

50、 c 要輸出的字符,可以是整數(shù)或字符,若超出字符型范圍,則只使用低字節(jié)返回值若成功,返回輸出字符的ASCII碼值若失敗,返回EOF (End of File),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,68,函數(shù)putchar舉例 (02-01.C),int c, i;putchar('a');/* 輸出'a' */putchar('\n');/* 輸出

51、換行符 */putchar(101);/* 輸出'e' */putchar('\101');/* 輸出'A' */c = 1000;i = putchar(c);/* 輸出'è',i=232 */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,69,字符輸入函數(shù)getchar,函數(shù)說明int getchar(void);從標(biāo)準(zhǔn)輸入

52、設(shè)備輸入一個字符需要輸入回車后,函數(shù)才返回參數(shù)說明無參數(shù)返回值若成功,返回輸入字符的ASCII碼值若失敗,返回EOF (End of File),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,70,函數(shù)getchar舉例 (02-02.C),int c;c = getchar();/* 輸入'a'后回車 */putchar(c);/* 輸出'a' */c = getc

53、har();/* 是否需要輸入? */printf("c=%d\n", c);/* 輸出c=? 10 */c = getchar();/* 輸入'abcd'后回車 */putchar(c);/* 輸出'a' */putchar(getchar());/* 輸出'b' */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,71,格式輸出函數(shù)

54、printf,函數(shù)說明int printf(char* format[, args...]);格式化輸出若干任意類型數(shù)據(jù)參數(shù)說明char* format 格式控制字符串a(chǎn)rgs 需要輸出的數(shù)據(jù)列表,可以多個或沒有返回值若成功,返回輸出的字節(jié)數(shù),包括換行符若失敗,返回EOF (End of File),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,72,函數(shù)printf的參數(shù)說明,格式字符串包括“格式說明”

55、和“普通字符”“格式說明”由%和“格式字符”組成,將輸出數(shù)據(jù)按指定格式輸出“普通字符”按原樣輸出輸出列表需要輸出的數(shù)據(jù)可以是變量、常量、表達(dá)式、函數(shù)調(diào)用等輸出數(shù)據(jù)按順序與“格式說明”對應(yīng)輸出,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,73,函數(shù)printf的格式舉例,printf("a=%d b=%d", a, b);,,,輸出結(jié)果>a=3 b=4,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類

56、型、運算符和表達(dá)式,74,格式字符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,75,附加格式字符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,76,函數(shù)printf舉例 (02-03.C),int i=1234; float f=-56.78;printf("i=%+6d", i);/* "i=?+1234" */printf("%c", i)

57、;/* "ò" */printf("%#08x", i);/* "0x0004d2" */printf("%10.5E", f);/* "-5.67800E+01" */printf("%7.4f%%", f);/* "-56.7800%" */printf("%+

58、6.3G", f);/* "?-56.8" */printf("%-6.3s", "Hello"); /* "Hel???" */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,77,格式輸入函數(shù)scanf,函數(shù)說明int scanf(char* format[, addrs...]);格式化輸入若干任意類型數(shù)據(jù)參數(shù)說明cha

59、r* format 格式控制字符串a(chǎn)ddrs 需要輸入的地址列表,可以有多個返回值返回輸入并賦值的數(shù)據(jù)項的個數(shù),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,78,函數(shù)scanf使用說明,“地址列表”中是變量的地址,而非變量scanf("%d", &i);關(guān)于輸入格式格式字符串中的普通字符須按相應(yīng)位置輸入除字符型(%c)外,輸入項之間用一個或多個空白字符分隔,包括空格、回車、制表符

60、空白字符會作為%c對應(yīng)的輸入,如果需要輸入下一個非空白字符,可以用%1s如規(guī)定了最大寬度,且輸入數(shù)據(jù)超出寬度,則按寬度截取數(shù)據(jù),C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,79,格式字符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,80,附加格式字符,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,81,函數(shù)scanf舉例 (02-04.C),int i, j;char c;scanf(&quo

61、t;%d%d", &i, &j); /* "2 3" or "23" or "23" */scanf("i=%d, j=%d", &i, &j); /* "i=2,?j=3" or "i=2,???j=3" */scanf("%d%c%d", &am

62、p;i, &c, &j); /* "2 a 3" => i=2, c='?', j出錯 */ /* "2a 3" => i=2, c='a', j=3 */,C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,82,簡單的C程序設(shè)計,例1:輸入球體半徑,求球的體積。例2:輸入大寫字母,轉(zhuǎn)換為小寫字母。,C語言程序設(shè)計

63、- 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,83,例1:球體體積 (02-05.C),#include #define PI 3.1415926void main(){ float r, V; printf("r="); scanf("%f", &r); V = 4.0 / 3 * PI * r * r * r; printf("V=%f\n",

64、 V);},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、運算符和表達(dá)式,84,例2:字母大小寫轉(zhuǎn)換 (02-06.C),#include void main(){ char cup, clow; cup = getchar(); clow = cup + 'a' - 'A'; printf("%c\n", clow);},C語言程序設(shè)計 - 第2章 數(shù)據(jù)類型、

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論