C語言課件PPT第3章_第1頁
C語言課件PPT第3章_第2頁
C語言課件PPT第3章_第3頁
C語言課件PPT第3章_第4頁
C語言課件PPT第3章_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 2 2 頁第第3 3章章 數(shù)據(jù)類型、運算符與表達式數(shù)據(jù)類型、運算符與表達式3.1 C3.1 C的數(shù)據(jù)類型的數(shù)據(jù)類型3.2 3.2 常量和變量常量和變量3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù)3.4 3.4 實型數(shù)據(jù)實型數(shù)據(jù)3.5 3.5 字符型數(shù)據(jù)字符型數(shù)據(jù)3.6 3.6 變量賦初值變量賦初值3.7 3.7 各類數(shù)值型數(shù)據(jù)間的混合運算各類數(shù)值型數(shù)據(jù)間的混合運算3.8 3.8 算術(shù)運算與算術(shù)表達式算術(shù)運算與算術(shù)表達式3.9 3.9 賦值運算與賦值表達式賦值運算與賦值表達式3.10 3.10 逗號運算符和逗號表達式逗號運算符和逗號表達式第 3 3 頁3.1 C3.1 C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型1.

2、1.基本類型基本類型 分為整型、實型、字符型和枚舉型四種。分為整型、實型、字符型和枚舉型四種。2.2.構(gòu)造類型構(gòu)造類型 分為數(shù)組、結(jié)構(gòu)體和共用體類型三種。分為數(shù)組、結(jié)構(gòu)體和共用體類型三種。3.3.指針類型指針類型4.4.空類型空類型第 4 4 頁3.2 3.2 常量和變量常量和變量3.2.1 3.2.1 常量和符號常量常量和符號常量1.1.常量的概念常量的概念在程序運行過程中,其值不能被改變的量稱為常量。在程序運行過程中,其值不能被改變的量稱為常量。2.2.常量的分類常量的分類常量分為字面常量和符號常量。常量分為字面常量和符號常量。 第 5 5 頁3.2.1 3.2.1 常量和符號常量常量和符

3、號常量 字面常量可以從書寫形式來判別其數(shù)據(jù)類型,字面常量可以從書寫形式來判別其數(shù)據(jù)類型,一般分為三類:一般分為三類: (1 1)整型常量,如)整型常量,如1 1,0 0,-3-3,6553565535(2 2)實型常量,如)實型常量,如1.231.23,.23.23,123.123.(3 3)字符常量,如)字符常量,如a a,d d( (由單引號括起由單引號括起來的來的 單個字符單個字符) )符號常量是用一個標(biāo)識符代表一個常量。符號常量是用一個標(biāo)識符代表一個常量。符號常量的值在程序運行期間其值是不能被改變的。符號常量的值在程序運行期間其值是不能被改變的。符號常量通常用大寫字母表示。符號常量通常

4、用大寫字母表示。第 6 6 頁3.2.1 3.2.1 常量和符號常量常量和符號常量例例3.1 3.1 求圓面積和周長求圓面積和周長#define PI 3.14 / /* *符號常量的定義方法符號常量的定義方法* */ /main()float r,s,l;r=2;s=PI*r*r;l=2*PI*r;printf(“l(fā)=%f,s=%fn”,l,s);getch();使用符號常量的好處:使用符號常量的好處:(1 1)含義明確)含義明確(2 2)修改方便)修改方便第 7 7 頁3.2.2 3.2.2 變變 量量1.1.變量的概念變量的概念在程序運行過程中,其值可以被改變的量稱為變量。在程序運行過程

5、中,其值可以被改變的量稱為變量。2.2.變量的兩個要素變量的兩個要素(1 1)變量名變量名 每個變量都必須有一個名字每個變量都必須有一個名字變量名,變量名實變量名,變量名實際上是一個符號地址。在對程序進行編譯連接時系際上是一個符號地址。在對程序進行編譯連接時系統(tǒng)會給每個變量名分配一個內(nèi)存地址。統(tǒng)會給每個變量名分配一個內(nèi)存地址。(2 2)變量值變量值 在程序運行過程中,變量值存儲在內(nèi)存中,系統(tǒng)通在程序運行過程中,變量值存儲在內(nèi)存中,系統(tǒng)通過變量名來引用變量的值。過變量名來引用變量的值。第 8 8 頁3.2.2 3.2.2 變變 量量變量名變量名2000H34a變量值變量值內(nèi)存地址內(nèi)存地址int

6、a;a=34;第 9 9 頁. .標(biāo)識符命名規(guī)則標(biāo)識符命名規(guī)則標(biāo)識符指變量名、符號常量名、函數(shù)名、數(shù)組名等。標(biāo)識符指變量名、符號常量名、函數(shù)名、數(shù)組名等。標(biāo)識符命名必須遵守以下規(guī)則:標(biāo)識符命名必須遵守以下規(guī)則:(1 1)只能由)只能由字母、數(shù)字和下劃線字母、數(shù)字和下劃線組成,且以組成,且以字母或下字母或下劃線劃線開頭。開頭。(2 2)C C語言的關(guān)鍵字不能用作變量名語言的關(guān)鍵字不能用作變量名(3 3)區(qū)分大小寫英文字母,同一字母的大小寫形式被)區(qū)分大小寫英文字母,同一字母的大小寫形式被認(rèn)為是兩個不同的字符。認(rèn)為是兩個不同的字符。3.2.2 3.2.2 變變 量量第 1010 頁習(xí)慣上,變量名、

7、函數(shù)名、數(shù)組名中的英文字母用習(xí)慣上,變量名、函數(shù)名、數(shù)組名中的英文字母用小寫,符號常量用大寫字母表示。小寫,符號常量用大寫字母表示。合法的變量名有:合法的變量名有:name,sum ,total ,_average ,p1,li_ming 不合法的變量名有:不合法的變量名有:123 ,M.John ,a#2 ,int ,#33,3.2.2 3.2.2 變變 量量第 1111 頁4.4.變量的定義與初始化變量的定義與初始化在語言中,要求對所有用到的變量,必須在語言中,要求對所有用到的變量,必須先定義、先定義、后使用后使用。在定義變量的同時進行賦初值的操作為在定義變量的同時進行賦初值的操作為變量初

8、始化變量初始化。 3.2.2 3.2.2 變變 量量int a=5,b=6,sum=0;初始化初始化如:如: int a,b,sum; a=5;b=6;sum=a+b;第 1212 頁(1 1)變量定義的格式)變量定義的格式 數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1, 1, 變量名變量名2;2; 如,如,float radius, length, area; ; (2 2)變量初始化的格式)變量初始化的格式 數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1=1=初值初值1, 1, 變量名變量名2=2=初值初值2;2; 如,如,float radius=2.5, length, area; ; 3.2.2 3.2.2

9、變變 量量第 1313 頁3.3.1 3.3.1 整型常量的表示方法整型常量的表示方法整型常量有三種表示形式:整型常量有三種表示形式:十進制十進制整數(shù),如整數(shù),如123123,-456-456,0 0八進制八進制整數(shù),以整數(shù),以0 0開頭、數(shù)碼取值為開頭、數(shù)碼取值為0-70-7的數(shù)的數(shù)十六進制十六進制數(shù),以數(shù),以0 x0 x或或0X0X開頭、數(shù)碼取值為開頭、數(shù)碼取值為0-90-9,A-FA-F或或a-a-f f的數(shù)。的數(shù)。3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù)整型數(shù)據(jù)分為整型常量和整型變量兩種。合法的八進制整數(shù),如合法的八進制整數(shù),如015(015(十進制為十進制為13)13)0101(0101(十

10、進制為十進制為65)65)0177777(0177777(十進制為十進制為65535)65535)以下各數(shù)不是合法的八進制數(shù):以下各數(shù)不是合法的八進制數(shù): 256(256(無前綴無前綴0) 03A2(0) 03A2(包含了非八進制數(shù)碼包含了非八進制數(shù)碼) )-0127(-0127(出現(xiàn)了負(fù)號出現(xiàn)了負(fù)號) )以下是合法的十六進制整數(shù):以下是合法的十六進制整數(shù):0X2A(十進制為十進制為42)0XA0 (十進制為十進制為160)0XFFFF (十進制十進制為為65535)以下是不合法的十六進制整數(shù):以下是不合法的十六進制整數(shù): 5A (無前綴無前綴0X)0X3H (含有非十六進制數(shù)碼含有非十六進制

11、數(shù)碼)第 1414 頁3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù)3.3.2 3.3.2 整型變量整型變量1.1.分類分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為3 3大類:大類:基本整型(類型關(guān)鍵字為基本整型(類型關(guān)鍵字為intint)短整型(類型關(guān)鍵字為短整型(類型關(guān)鍵字為short intshort int)長整型(類型關(guān)鍵字為長整型(類型關(guān)鍵字為long intlong int)長度應(yīng)滿足:短整型長度應(yīng)滿足:短整型 基本整型基本整型 長整型長整型在在TC 2.0中,基本整型和短整型長度都為中,基本整型和短整型長度都為16位,長整型為位,長整型為32位。位。第

12、 1515 頁3.3.2 3.3.2 整型變量整型變量根據(jù)是否有符號位又可分為六種:根據(jù)是否有符號位又可分為六種:長整型長整型 無符號長整型(無符號長整型(unsigned long int) unsigned long int) 有符號長整型(有符號長整型(signed long intsigned long int)短整型短整型無符號短整型(無符號短整型(unsigned short int unsigned short int )有符號短整型(有符號短整型(signed short intsigned short int)基本整型基本整型無符號基本整型(無符號基本整型(unsigned

13、intunsigned int)有符號基本整型(有符號基本整型(signed intsigned int)第 1616 頁n n位有符號整型變量的值域為:位有符號整型變量的值域為:-2-2n-1 n-1 2 2n-1n-1-1-1n n位無符號整型變量的值域為:位無符號整型變量的值域為:0 0 (2 2n n-1-1) 3.3.2 3.3.2 整型變量整型變量2 2、值域、值域不同類型的整型變量,其值域不同。不同類型的整型變量,其值域不同。詳見詳見P33 P33 表表3.13.1類型說明符數(shù)的范圍類型說明符數(shù)的范圍 分配字節(jié)數(shù)分配字節(jié)數(shù)int -3276832767 short int -32

14、76832767 unsigned int 065535 unsigned short 065535 long int -21474836482147483647 (-231231-1)unsigned long 04294967295 (0232-1)第 1717 頁3 3、整型變量的定義、整型變量的定義例:例:int a,b;unsigned int c,d;unsigned long e;long f;short g;3.3.2 3.3.2 整型變量整型變量思考:思考:a,b,c,d,e,f,g的取值范圍各的取值范圍各為多少?為多少?0 +65535-32768 +32767-231 2

15、31-10 232-1-32768 +32767第 1818 頁3.3.2 3.3.2 整型變量整型變量4 4、整型數(shù)據(jù)的溢出、整型數(shù)據(jù)的溢出當(dāng)數(shù)值范圍超出變量的值域,則會發(fā)生數(shù)據(jù)溢出當(dāng)數(shù)值范圍超出變量的值域,則會發(fā)生數(shù)據(jù)溢出現(xiàn)象,因此現(xiàn)象,因此編程時要注意變量的值域編程時要注意變量的值域。例:例:main()main()int a=32767,b;int a=32767,b;b=a+1;b=a+1;printf(printf(“%d%d”,b);,b); 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ab變成負(fù)數(shù),

16、必須將補碼轉(zhuǎn)換為變成負(fù)數(shù),必須將補碼轉(zhuǎn)換為原碼,才能知道其數(shù)值大小原碼,才能知道其數(shù)值大小結(jié)果為結(jié)果為-32768第 1919 頁3.3.3 3.3.3 整型常量的類型整型常量的類型將整型常量賦給整型變量時要注意變量的將整型常量賦給整型變量時要注意變量的取值范圍取值范圍。(1 1)在)在3276832768+32767+32767之間的整數(shù)可以看成是之間的整數(shù)可以看成是intint型型或或short intshort int型,可賦值給型,可賦值給short int short int ,int, long int, long intint型變量。型變量。(2 2)一個整數(shù)值超過上述范圍,但在

17、)一個整數(shù)值超過上述范圍,但在-2147683468-214768346821476836472147683647之間,則看成是之間,則看成是long long 型整數(shù),可賦值給型整數(shù),可賦值給long intlong int型變量。型變量。(3 3)在一個整型常量后面加上)在一個整型常量后面加上u u或或U U,則將其看成是,則將其看成是unsigned intunsigned int型,如型,如12345u12345u,-1u-1u(4 4)在整型常數(shù)后添加一個)在整型常數(shù)后添加一個L L或或l l字母表示該數(shù)為長整字母表示該數(shù)為長整型數(shù)型數(shù), , 如如22L, 0773L, 0Xae4l

18、22L, 0773L, 0Xae4l。第 2020 頁3.4 3.4 實型數(shù)據(jù)實型數(shù)據(jù)3.4.1 3.4.1 實型常量的表示方法實型常量的表示方法實數(shù)又稱浮點數(shù),其表示形式有兩種:實數(shù)又稱浮點數(shù),其表示形式有兩種:(1 1)十進制小數(shù)形式)十進制小數(shù)形式如:如: 0.1230.123,.123.123,123.123.,123.0, 123.0, 都是十進制都是十進制小數(shù)形式。小數(shù)形式。注意:小數(shù)點不可缺少。注意:小數(shù)點不可缺少。(2 2)指數(shù)形式)指數(shù)形式如如1.23e31.23e3或或1.23E31.23E3都表示都表示1.231.23103103注意:指數(shù)形式字母注意:指數(shù)形式字母e(e

19、(或或E)E)前面必須有數(shù)字,且前面必須有數(shù)字,且e e后后面的指數(shù)必須為整數(shù)。面的指數(shù)必須為整數(shù)。第 2121 頁u一個實數(shù)可以有多種指數(shù)表示形式,但只有一種規(guī)一個實數(shù)可以有多種指數(shù)表示形式,但只有一種規(guī)范化指數(shù)形式。范化指數(shù)形式。u規(guī)范化指數(shù)形式的特點:規(guī)范化指數(shù)形式的特點:在字母在字母e e(或(或E E)之前的小)之前的小數(shù)部分中,小數(shù)點前面有且只有一位非零數(shù)字。如數(shù)部分中,小數(shù)點前面有且只有一位非零數(shù)字。如 2.345e22.345e2,1.234E51.234E5都是規(guī)范化的指數(shù)形式。都是規(guī)范化的指數(shù)形式。u一個實數(shù)在用指數(shù)形式輸出時,是按規(guī)范化指數(shù)形一個實數(shù)在用指數(shù)形式輸出時,是

20、按規(guī)范化指數(shù)形式輸出的。式輸出的。 3.4.1 3.4.1 實型常量的表示方法實型常量的表示方法第 2222 頁3.4.23.4.2實型變量實型變量1 1、實型數(shù)據(jù)在內(nèi)存中的存放形式、實型數(shù)據(jù)在內(nèi)存中的存放形式 實型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存儲實型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存儲 如:如:123.45123.45可以用可以用0.123450.12345 10102 2來表示來表示尾數(shù)尾數(shù)階碼階碼階碼符階碼符尾數(shù)符尾數(shù)符+ .123452+第 2323 頁3.4.23.4.2實型變量實型變量2、實型變量的分類實型變量的分類詳見詳見P36 表表3.2類型類型長度長度有效數(shù)字位有效數(shù)字位數(shù)值范圍數(shù)值范圍單精

21、度(單精度(float型)型)32位位67位位10-3710+38雙精度(雙精度(double型)型) 64位位1516位位10-30710+308長雙精度型(長雙精度型(long double型)型)128位位1819位位10-493110+4932第 2424 頁3.4.23.4.2實型變量實型變量u對于對于float型變量,其在內(nèi)存中存儲時,一般是用型變量,其在內(nèi)存中存儲時,一般是用8位表示指數(shù)部分,位表示指數(shù)部分,24位表示小數(shù)部分。位表示小數(shù)部分。u表示指數(shù)的位數(shù)越多,則所能表示的數(shù)值范圍越大,表示指數(shù)的位數(shù)越多,則所能表示的數(shù)值范圍越大,而表示小數(shù)部分的位數(shù)越多,則精確度越高。而表

22、示小數(shù)部分的位數(shù)越多,則精確度越高。ufloat型變量取值范圍為型變量取值范圍為-3.4*10-373.4*1038實型變量的定義float x,y;double z;long double t;第 2525 頁3.4.23.4.2實型變量實型變量3、實型數(shù)據(jù)的舍入誤差、實型數(shù)據(jù)的舍入誤差main() float a,b; a=123456.789e5; b=a+20; printf(%f,b); u原因:原因:floatfloat型數(shù)據(jù)有效數(shù)型數(shù)據(jù)有效數(shù)字字6 67 7位,第位,第7 7位以后的數(shù)位以后的數(shù)據(jù)不一定可靠。據(jù)不一定可靠。u因此要避免一個很大的數(shù)因此要避免一個很大的數(shù)與一個很小的

23、數(shù)進行加減與一個很小的數(shù)進行加減。運行運行結(jié)果為結(jié)果為12345678848.000000第 2626 頁3.4.3 3.4.3 實型常量的類型實型常量的類型uTC 2.0TC 2.0編譯系統(tǒng)將實型常量作為雙精度來處理,以編譯系統(tǒng)將實型常量作為雙精度來處理,以提高運算精確度。提高運算精確度。如如: :float f; f=2.23456float f; f=2.23456* *1.23456; 1.23456; 運算結(jié)果為運算結(jié)果為 2.7586982.758698計算時將兩個常量作為雙精度數(shù)據(jù)處理,計算結(jié)計算時將兩個常量作為雙精度數(shù)據(jù)處理,計算結(jié)果則取前果則取前7 7位有效數(shù)字賦給位有效數(shù)字

24、賦給f f有時為了提高運算速度,也可以在實數(shù)后面加有時為了提高運算速度,也可以在實數(shù)后面加f f或或F F,作為單精度實數(shù)處理。,作為單精度實數(shù)處理。第 2727 頁3.4.3 3.4.3 實型常量的類型實型常量的類型u一個實型常量可以賦給一個實型常量可以賦給floatfloat型、型、doubledouble型或型或long long doubledouble型變量,系統(tǒng)會自動根據(jù)變量的類型來截取實型變量,系統(tǒng)會自動根據(jù)變量的類型來截取實型常量中相應(yīng)的有效位數(shù)字。型常量中相應(yīng)的有效位數(shù)字。 如:如:float a;float a; a=111111.111; a=111111.111; 則則

25、a a只能接收前面只能接收前面7 7位有效數(shù)字,最后位有效數(shù)字,最后2 2位不起作用。位不起作用。第 2828 頁3.53.5字符型數(shù)據(jù)字符型數(shù)據(jù)3.5.1 3.5.1 字符常量字符常量(1 1)一般形式的字符常量)一般形式的字符常量uC C的字符常量是用單引號括起來的單個字符,如的字符常量是用單引號括起來的單個字符,如a,$,b,ca,$,b,c等都是字符常量。等都是字符常量。u字符常量要區(qū)分大小寫字母,如字符常量要區(qū)分大小寫字母,如aa和和AA是兩個不是兩個不同的字符常量。同的字符常量。第 2929 頁3.5.1 3.5.1 字符常量字符常量(2 2)特殊形式的字符常量)特殊形式的字符常量

26、uC C語言允許使用一種特殊形式的字符常量,即以語言允許使用一種特殊形式的字符常量,即以“ ”開頭的字符序列,稱作轉(zhuǎn)義字符。開頭的字符序列,稱作轉(zhuǎn)義字符。u其意思是將反斜杠(其意思是將反斜杠( )后面的字符轉(zhuǎn)換成)后面的字符轉(zhuǎn)換成另外的意義。另外的意義。 3.5.1 3.5.1 字符常量字符常量轉(zhuǎn)義字符轉(zhuǎn)義字符功能功能轉(zhuǎn)義字符轉(zhuǎn)義字符功能功能n回車換行回車換行反斜杠反斜杠t跳到下一個跳到下一個制表位制表位單引號單引號b退一格退一格”雙引號雙引號r回車不換行回車不換行ddd13位八進位八進制所代表的制所代表的字符字符f走紙換頁走紙換頁xff12位十六位十六進制所代表進制所代表的字符的字符第 31

27、31 頁3.5.1 3.5.1 字符常量字符常量udddddd是用是用ASCIIASCII碼(八進制數(shù))表示一個字符碼(八進制數(shù))表示一個字符 u xhhxhh是用是用ASCIIASCII碼(十六進制數(shù))表示一個字符碼(十六進制數(shù))表示一個字符如:如:101101代表代表ASCIIASCII碼(十進制數(shù))為碼(十進制數(shù))為6565的字符的字符“A A”。x41x41代表代表ASCIIASCII碼(十進制數(shù))為碼(十進制數(shù))為6565的字符的字符“A A”。00或或000000是代表是代表ASCIIASCII碼為碼為0 0的控制字符,即的控制字符,即“空操作空操作”字符,它將用在字符串中作為結(jié)束

28、標(biāo)志。字符,它將用在字符串中作為結(jié)束標(biāo)志。第 3232 頁3.5.1 3.5.1 字符常量字符常量例例3.5 轉(zhuǎn)義字符的使用轉(zhuǎn)義字符的使用main()clrscr();printf(abctderfn);printf(hijktLbMn);getch();結(jié)果為:結(jié)果為: fabc de hijkM運行運行第 3333 頁3.5.2 3.5.2 字符變量字符變量字符型變量用于存放一個字符字符型變量用于存放一個字符, ,在內(nèi)存中占一個字節(jié)。在內(nèi)存中占一個字節(jié)。字符變量的定義形式:字符變量的定義形式: char c1,c2,c3;char c1,c2,c3; c1= c1=a a; ; c2= c

29、2=b b; ; c3= c3=123123; /; /* *轉(zhuǎn)義字符轉(zhuǎn)義字符* */ /第 3434 頁(1 1)存儲形式)存儲形式u字符數(shù)據(jù)在內(nèi)存中以字符數(shù)據(jù)在內(nèi)存中以ASCIIASCII碼形式存儲。碼形式存儲。(2 2)使用方法)使用方法u字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用, ,可以互相賦值??梢曰ハ噘x值。u對字符數(shù)據(jù)也可進行算術(shù)運算。對字符數(shù)據(jù)也可進行算術(shù)運算。u一個字符型數(shù)據(jù)可以字符形式或整數(shù)形式輸出。一個字符型數(shù)據(jù)可以字符形式或整數(shù)形式輸出。3.5.3 3.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲字符數(shù)據(jù)在內(nèi)存中的存儲形式及用法形式及用法第 3535 頁例例3.6 3.

30、6 字符數(shù)據(jù)和整型數(shù)據(jù)通用字符數(shù)據(jù)和整型數(shù)據(jù)通用main() char ch1,ch2; ch1=a; ch2=98; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 結(jié)果:結(jié)果: ch1=a,ch2=b ch1=97,ch2=98運行運行3.5.3 3.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲字符數(shù)據(jù)在內(nèi)存中的存儲形式及用法形式及用法第 3636 頁 例例3.7 字符數(shù)據(jù)的算術(shù)運算字符數(shù)據(jù)的算術(shù)運算 /*程序功能程序功能: 大小寫字母轉(zhuǎn)換大小寫字母轉(zhuǎn)換*/main( ) char ch1,ch2;ch1=a; ch

31、2=B; printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); 運行運行3.5.3 3.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲字符數(shù)據(jù)在內(nèi)存中的存儲形式及用法形式及用法第 3737 頁注意:若變量定義為注意:若變量定義為signed charsigned char類型,則類型,則其其ASCIIASCII碼的取值范圍為碼的取值范圍為128128127,127,此時此時: :u如果使用如果使用ASCIIASCII碼為碼為0 0127127之之間的字符,其字節(jié)中最高位為間的字符,其字節(jié)中最高位為0 0,因此用,因此用d d輸出可得到一個輸出可得到一個正數(shù);正數(shù);u如果使用如果使用A

32、SCIIASCII碼為碼為128128255255之間的字符,由于其最高位為之間的字符,由于其最高位為1 1,因此用,因此用%d%d格式輸出時將得格式輸出時將得到一個負(fù)整數(shù)。到一個負(fù)整數(shù)。例例3.8: 3.8: main()main()char a=130; char a=130; printf(printf(“%d%d”, ,a);a);結(jié)果為結(jié)果為:-126:-1263.5.3 3.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲形式及字符數(shù)據(jù)在內(nèi)存中的存儲形式及用法用法第 3838 頁3.5.4 3.5.4 字符串常量字符串常量字符串常量是用一對雙引號括起來的字符序列。字符串常量是用一對雙引號括起來的字符

33、序列。如:如:How do you do?, CHINA, aHow do you do?, CHINA, a可以用可以用printf()printf()函數(shù)直接輸出一個字符串常量函數(shù)直接輸出一個字符串常量如:如:printf(How do you do?);printf(How do you do?);第 3939 頁3.5.4 3.5.4 字符串常量字符串常量字符串常量與字符常量的區(qū)別:字符串常量與字符常量的區(qū)別:(1 1)書寫形式不同書寫形式不同,字符常量是用一對,字符常量是用一對單引號單引號括起來括起來的的單個字符單個字符,字符串常量是用一對,字符串常量是用一對雙引號雙引號括起來的括起

34、來的字符序列。字符序列。如:如:aa是字符常量,是字符常量,aa是字符串常量。是字符串常量。(2 2)存儲形式不同存儲形式不同,每個字符串常量的結(jié)尾都會自動,每個字符串常量的結(jié)尾都會自動加上一個加上一個字符串結(jié)束標(biāo)志字符串結(jié)束標(biāo)志00, ,即即“空操作符空操作符”,它是它是ASCIIASCII碼為碼為0 0的字符,不會引起任何控制動作,的字符,不會引起任何控制動作,也不是一個可顯示的字符。也不是一個可顯示的字符。第 4040 頁3.5.4 3.5.4 字符串常量字符串常量如如“ChinaChina”在內(nèi)存中的存儲形式如下:在內(nèi)存中的存儲形式如下:又如:又如:“How do you do.” 在

35、內(nèi)存中占在內(nèi)存中占15個字節(jié)個字節(jié) “Good morning.”在內(nèi)存中占在內(nèi)存中占14個個字節(jié)字節(jié)因此,因此,a和和“a” 在存儲形式上是根在存儲形式上是根本不同的。本不同的。a只占只占1個字節(jié)個字節(jié)“a”占占2個字節(jié)個字節(jié)小結(jié):小結(jié):字符串常量字符串常量在內(nèi)存中所占的字節(jié)數(shù)等于其在內(nèi)存中所占的字節(jié)數(shù)等于其有效字符個有效字符個數(shù)加數(shù)加1 1 ;字符常量字符常量所占字節(jié)數(shù)為所占字節(jié)數(shù)為1 1 。China0“China”在內(nèi)存中實際占用6 6個字節(jié)個字節(jié)。第 4141 頁3.5.4 3.5.4 字符串常量字符串常量注意事項:注意事項:(1 1)如果反斜杠和雙引號作為字符串中的有效字符,)如果

36、反斜杠和雙引號作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。則必須使用轉(zhuǎn)義字符。 例如:例如:C:msdosv6.22 C:msdosv6.22 C:msdosv6.22 C:msdosv6.22 I say:Goodbye! I say:Goodbye! I say:Goodbye! I say:Goodbye! (2 2)字符串常量中的)字符串常量中的00是系統(tǒng)自動加上的,在是系統(tǒng)自動加上的,在寫字符串時不必加寫字符串時不必加00,否則會出錯。,否則會出錯。第 4242 頁課堂練習(xí)課堂練習(xí)(1 1)以下選項中可作為)以下選項中可作為C C語言合法整數(shù)的是語言合法整數(shù)的是( )( ) A A)

37、10110B B10110B B)0386 C0386 C)0Xffa D0Xffa D)x2a2x2a2(2 2)以下所列的)以下所列的C C語言常量中,錯誤的是(語言常量中,錯誤的是( ) A) 0 xFF B) 1.2e0.5 C) 2L D) 72A) 0 xFF B) 1.2e0.5 C) 2L D) 72(3 3)下列選項中,合法的)下列選項中,合法的C C語言關(guān)鍵字是(語言關(guān)鍵字是( ) A) VAR B) cher C) integer D) defaultA) VAR B) cher C) integer D) default第 4343 頁課堂練習(xí)課堂練習(xí)(4 4)以下不能

38、定義為用戶標(biāo)識符的是)以下不能定義為用戶標(biāo)識符的是( )( ) A A)scanf Bscanf B)Void CVoid C)_3com_ D_3com_ D)intint(5 5)下列關(guān)于)下列關(guān)于C C語言用戶標(biāo)識符的敘述中正確的是(語言用戶標(biāo)識符的敘述中正確的是( )A A)用戶標(biāo)識符中可以出現(xiàn)下劃線和點號)用戶標(biāo)識符中可以出現(xiàn)下劃線和點號B B)用戶標(biāo)識符中不可以出現(xiàn)連字符()用戶標(biāo)識符中不可以出現(xiàn)連字符(- -),但可以出),但可以出 現(xiàn)下劃線(現(xiàn)下劃線(_ _)C C)用戶標(biāo)識符中可以出現(xiàn)下劃線,但不可以放在用)用戶標(biāo)識符中可以出現(xiàn)下劃線,但不可以放在用 戶標(biāo)識符的開頭戶標(biāo)識符的

39、開頭D D)用戶標(biāo)識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用)用戶標(biāo)識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用 戶標(biāo)識符的開頭戶標(biāo)識符的開頭第 4444 頁3.63.6變量賦初值變量賦初值 u賦初值即對一些變量預(yù)先設(shè)置值。賦初值即對一些變量預(yù)先設(shè)置值。u可以先定義變量,再賦初值可以先定義變量,再賦初值 如:如: int a;a=5;int a;a=5;u也可以在定義變量的同時對變量賦初值(這種也可以在定義變量的同時對變量賦初值(這種情況稱為初始化)情況稱為初始化) 如:如:int i=1;int i=1;u可以對變量的一部分賦初值可以對變量的一部分賦初值 如:如: int i,j,sum=

40、0;int i,j,sum=0;u也可以對幾個變量賦同一個初值。也可以對幾個變量賦同一個初值。 如:如:int a,b,c; a=b=c=1;int a,b,c; a=b=c=1;第 4545 頁3.6 3.6 變量賦初值變量賦初值如:如: int a;float b=1.234;char c=a;int d,e,f=5; int g=3,h=3,i=3; 注意:不能寫成:注意:不能寫成: int g=h=i=3;即不能同時將多個變即不能同時將多個變量量初始化初始化為同一個值為同一個值但可以寫成:但可以寫成:int g,h,i;int g,h,i;g=h=i=3;g=h=i=3;a=3;注意:

41、注意:l對變量賦初值是在程序?qū)ψ兞抠x初值是在程序運行運行時進行的,時進行的,而不是在編譯階段完成的。而不是在編譯階段完成的。l在編譯階段只是給變量分配存儲空間在編譯階段只是給變量分配存儲空間 第 4646 頁3.6 3.6 變量賦初值變量賦初值例:例: void main( )long x,y;int a,b,c,d;x=5;y=6;a=7;b=8;c=x+a;d=y+b;printf(c=x+a=%d,d=y+b=%dn,c,d);程序輸出結(jié)果為:程序輸出結(jié)果為: c=x+a=12,d=y+b=14第 4747 頁各類數(shù)據(jù)間的混合運算各類數(shù)據(jù)間的混合運算l整型、實型、字符型數(shù)據(jù)間可以進行混合

42、運算。整型、實型、字符型數(shù)據(jù)間可以進行混合運算。l但在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一但在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型后才可進行運算。這種轉(zhuǎn)換由系統(tǒng)自動進行。類型后才可進行運算。這種轉(zhuǎn)換由系統(tǒng)自動進行。注意:注意:表示必須的轉(zhuǎn)換,表示必須的轉(zhuǎn)換,表示數(shù)據(jù)表示數(shù)據(jù)類型轉(zhuǎn)換的方向。類型轉(zhuǎn)換的方向。只表示數(shù)據(jù)類型級別的高低,只表示數(shù)據(jù)類型級別的高低,并不表示數(shù)據(jù)類型轉(zhuǎn)換的步驟。并不表示數(shù)據(jù)類型轉(zhuǎn)換的步驟。如如intint型與型與doubledouble型數(shù)據(jù)進行運算型數(shù)據(jù)進行運算,先將,先將intint型數(shù)據(jù)轉(zhuǎn)換成型數(shù)據(jù)轉(zhuǎn)換成doubledouble型型,然后再進行運算。,然

43、后再進行運算。double float long unsigned int char,short P41圖圖3.4第 4848 頁例如:假設(shè)已指定例如:假設(shè)已指定i為整型變量,為整型變量,f為為float型變型變量,量,d為為double型變量,型變量,e為為long型型則則: 10+a+i*f-d/e 結(jié)果為結(jié)果為double型型 各類數(shù)據(jù)間的混合運算各類數(shù)據(jù)間的混合運算第 4949 頁3.7.1 C3.7.1 C語言運算符簡介語言運算符簡介1、算術(shù)運算符、算術(shù)運算符+,-, *, /,%,+,-2、關(guān)系運算符、關(guān)系運算符 = = !=3、邏輯運算符、邏輯運算符! & |4、位運算符、位運算

44、符 | & 5、賦值運算符、賦值運算符=及其擴展賦值運算符及其擴展賦值運算符6、條件運算符、條件運算符(?: )7、逗號運算符、逗號運算符,8、指針運算符、指針運算符* &9、求字節(jié)數(shù)運算符、求字節(jié)數(shù)運算符sizeof 10、強制類型轉(zhuǎn)換運算符、強制類型轉(zhuǎn)換運算符(類型類型)11、分量運算符、分量運算符. 12、下標(biāo)運算符、下標(biāo)運算符 13、指向運算符、指向運算符詳見詳見P433.7 C3.7 C語言運算符和表達式語言運算符和表達式第 5050 頁3.7.2 3.7.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式 1 1、基本的算術(shù)運算符、基本的算術(shù)運算符C C語言基本的算術(shù)運算符包括語言基

45、本的算術(shù)運算符包括+ +、 - -、 * *、 / /、 % %、+、- - -注意:注意:(1 1)為模運算符,又稱求余運算符,)為模運算符,又稱求余運算符,% %兩側(cè)均應(yīng)為兩側(cè)均應(yīng)為整型數(shù)據(jù)整型數(shù)據(jù)。如。如5%3 ,6%105%3 ,6%10是合法的,是合法的,1.5%21.5%2不合法。不合法。(2 2)兩個整數(shù)相除結(jié)果為整數(shù)兩個整數(shù)相除結(jié)果為整數(shù),小數(shù)部分被舍去。,小數(shù)部分被舍去。 如如5/35/3結(jié)果為結(jié)果為1 1, -5/3-5/3結(jié)果為結(jié)果為-1-1,3/53/5結(jié)果為結(jié)果為0 0。(3 3)若參加)若參加+ +、 - -、 * *、 / /運算的兩個數(shù)中運算的兩個數(shù)中有一個為有

46、一個為實數(shù),則運算結(jié)果為實數(shù),則運算結(jié)果為doubledouble型型,因為所有實數(shù)都是,因為所有實數(shù)都是按按doubledouble型進行運算。型進行運算。 如如1.0/21.0/2結(jié)果為結(jié)果為0.50.5,而,而1/21/2結(jié)果為結(jié)果為0 0。第 5151 頁3.7.2 3.7.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式自增、自減運算符的作用是使變量的值增自增、自減運算符的作用是使變量的值增1 1或減或減1 1。+i, -i +i, -i 在使用在使用i i之前,先使之前,先使i i的值加(減)的值加(減)1 1;i+, i- - i+, i- - 在使用在使用i i之后,使之后,使

47、i i的值加(減)的值加(減)1 1i=3;printf(“%d”,+i); 運行結(jié)果為:運行結(jié)果為:4i=3; printf(%d,i+);運行結(jié)果為:運行結(jié)果為:3如:第 5252 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式例例3.9main() int x=6, y; printf(x=%dn,x); y = +x; printf(x=%d,y=%dn,x,y); y = x-; printf(x=%d,y=%dn,x,y); 程序運行結(jié)程序運行結(jié)果:果:x=6x=7,y=7x=6,y=7第 5353 頁注意:注意:(1)自增()自增(+)、自減()、自減(-

48、 -)運算符只能用于變)運算符只能用于變量,不能用于常量或表達式量,不能用于常量或表達式, 5+、-(a+b)等都是等都是非法的。非法的。(2)+和和- -的結(jié)合方向為的結(jié)合方向為“自右向左自右向左”,即右結(jié),即右結(jié)合性。如合性。如: -i+,相當(dāng)于相當(dāng)于-(i+) 設(shè)設(shè)i=3,則,則printf(“%d,-i+”);相當(dāng)于先將相當(dāng)于先將3加上加上負(fù)號輸出負(fù)號輸出-3,再對,再對i加加1,使,使i增值為增值為4。3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式第 5454 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式4 4、有關(guān)表達式使用中的問題說

49、明、有關(guān)表達式使用中的問題說明(1 1)不同的編譯系統(tǒng)對表達式中子表達的求值順)不同的編譯系統(tǒng)對表達式中子表達的求值順序的規(guī)定不同。序的規(guī)定不同。 如:如:(i+)+(i+)+(i+)(i+)+(i+)+(i+),設(shè),設(shè)i i的原值為的原值為3 3,則,則如果按從左到右的順序求解,其值為如果按從左到右的順序求解,其值為1212,而如,而如果將果將3 3作為全體作為全體i i的值,則結(jié)果為的值,則結(jié)果為9 9。第 5555 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式main()int i=3;printf(%d,(i+)+(i+)+(i+); 運行運行結(jié)果為結(jié)果為12

50、main()int i=3,j;j=(i+)+(i+)+(i+);printf(%d,j); 運行運行結(jié)果為結(jié)果為9要避免出現(xiàn)歧義,要避免出現(xiàn)歧義,可以寫成下列語句:可以寫成下列語句:i=3;a=i+;b=i+;c=i+;d=a+b+c; 則則d為為12第 5656 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式(2)C語言對調(diào)用函數(shù)時實參的求值順序無統(tǒng)一規(guī)定,語言對調(diào)用函數(shù)時實參的求值順序無統(tǒng)一規(guī)定,多數(shù)編譯系統(tǒng)按自右向左的順序進行求值。多數(shù)編譯系統(tǒng)按自右向左的順序進行求值。 例:例:i=3; printf(“%d,%d”,i, i+); 結(jié)果為結(jié)果為4,3第 575

51、7 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式例例3.11main() int i,j; i=1;j=2; printf(“%d,%dn”,(i+)+(i+),(+i)+(+i); printf(“%dn”,(i+)+(i+); printf(“%dn”,(+i)+(+i); printf(“%dn”,i+j); printf(“%dn”,i+(+j); 第 5858 頁3.8.2 3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式2 2、強制類型轉(zhuǎn)換運算符、強制類型轉(zhuǎn)換運算符作用:將變量或表達式轉(zhuǎn)換成所需類型作用:將變量或表達式轉(zhuǎn)換成所需類型語法形式:語法形

52、式: ( (類型名類型名)()(表達式表達式) ) ( (類型名類型名) )變量名變量名 如:如:(int)x, (double)(x+y)(int)x, (double)(x+y),(float)(5%3)(float)(5%3)注意注意: :(1 1)表達式應(yīng)該用括號括起來。)表達式應(yīng)該用括號括起來。(2 2)在強制類型轉(zhuǎn)換時,原來變量的類型并不變。)在強制類型轉(zhuǎn)換時,原來變量的類型并不變。第 5959 頁課堂練習(xí)課堂練習(xí)(1)假定假定x和和y為為double型,則表達式型,則表達式x=2,y=x+3/2的值是的值是A) 3.500000 B)3 C) 2.000000 D) 3.0000

53、00(2)設(shè)正設(shè)正x、y均為整型變量,且均為整型變量,且x=10, y=3,則以下語句,則以下語句的輸出結(jié)果是的輸出結(jié)果是printf(%d,%dn, x-, -y);A) 10,3 B) 9,3 C) 9,2 D)10,2(3) 設(shè)有設(shè)有 int x=11; 則表達式則表達式 (x+ * 1/3) 的值是(的值是( ) A) 3 B) 4 C) 11 D) 12第 6060 頁課堂練習(xí)課堂練習(xí)(4) 下列程序的輸出結(jié)果是(下列程序的輸出結(jié)果是( )main() double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf(%d n, d*y); A) 3

54、 B) 3.2 C) 0 D) 3.07運行程序運行程序第 6161 頁3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式 1 1、賦值運算符、賦值運算符 “= =”為賦值運算符。為賦值運算符。 其作用是將一個數(shù)據(jù)或一個表達式的值賦給一個其作用是將一個數(shù)據(jù)或一個表達式的值賦給一個變量。變量。2 2、類型轉(zhuǎn)換、類型轉(zhuǎn)換 當(dāng)賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,在賦值當(dāng)賦值運算符兩側(cè)的數(shù)據(jù)類型不一致,在賦值時要進行類型轉(zhuǎn)換。時要進行類型轉(zhuǎn)換。第 6262 頁3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式轉(zhuǎn)換規(guī)則:轉(zhuǎn)換規(guī)則:(1 1)將實型數(shù)據(jù)(包括單、雙精度)賦給整型)將實型數(shù)據(jù)

55、(包括單、雙精度)賦給整型變量時,舍棄實數(shù)的小數(shù)部分,在內(nèi)存中以整變量時,舍棄實數(shù)的小數(shù)部分,在內(nèi)存中以整數(shù)形式存儲。數(shù)形式存儲。 如:如:i i為整型變量,為整型變量,i=1.234i=1.234的結(jié)果是的結(jié)果是i i1 1。(2 2)將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值)將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。賦給單不變,但以浮點數(shù)形式存儲到變量中。賦給單精度變量時有效數(shù)字為精度變量時有效數(shù)字為7 7位,雙精度為位,雙精度為1616位,位,有效數(shù)字不足時,將用零補足。有效數(shù)字不足時,將用零補足。 如如: : 將將1212賦給賦給floatfloat型變量型變量

56、f f,即,即f=12,f=12,則先將則先將1212轉(zhuǎn)轉(zhuǎn)換成換成12.0000012.00000再存儲在再存儲在f f中中; ;如如: : 將將1212賦給賦給doubledouble型變量,則轉(zhuǎn)換成型變量,則轉(zhuǎn)換成12.0000000000000012.00000000000000。第 6363 頁3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式(2 2)將字符型數(shù)據(jù)賦給整型變量時,將字符數(shù))將字符型數(shù)據(jù)賦給整型變量時,將字符數(shù)據(jù)(據(jù)(8 8位)放到整型變量的低位)放到整型變量的低8 8位中。位中。u若是若是unsigned charunsigned char型數(shù)據(jù)賦給整型變量

57、,則型數(shù)據(jù)賦給整型變量,則高高8 8位全補位全補0 0。u若是若是charchar型數(shù)據(jù),則字符最高位為型數(shù)據(jù),則字符最高位為0,0,整型變整型變量高量高8 8位位全全補補0 0;否則全補;否則全補1 1。第 6464 頁3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式(3)將一個將一個int、short、long型數(shù)據(jù)賦給一個型數(shù)據(jù)賦給一個char型變型變量時,只將其低量時,只將其低8位原樣送到位原樣送到char型變量中型變量中,即截斷。即截斷。 如:如: int i=300; char c=a; c=i;C的值為多少?的值為多少?第 6565 頁3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式(4)(4)將帶符號的整型數(shù)據(jù)將帶符號的整型數(shù)據(jù)(intint型)賦給型)賦給longlong型變量型變量時,要進行符號擴展。將時,要進行符號擴展。將整型數(shù)據(jù)的整型數(shù)據(jù)的1616位送到位送到longlong型變量的低型變量的低1616位中位中, ,u若整數(shù)為正數(shù),則若整數(shù)為正數(shù),則longlong型變量的高型變量的高1616位全為位全為0 0;u若為負(fù)數(shù),則全為若為負(fù)數(shù),則全為1 1。 main() int a=-1;

溫馨提示

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

評論

0/150

提交評論