第3章 常量和變量_第1頁
第3章 常量和變量_第2頁
第3章 常量和變量_第3頁
第3章 常量和變量_第4頁
第3章 常量和變量_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章2主要內(nèi)容3.1 3.1 常量與變量常量與變量3.2 3.2 整型數(shù)據(jù)整型數(shù)據(jù)3.3 3.3 浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)3.4 3.4 字符字符型數(shù)據(jù)型數(shù)據(jù)3.5 3.5 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 3數(shù)據(jù)類型總表數(shù)據(jù)類型總表C C數(shù)數(shù)據(jù)據(jù)類類型型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型voidvoid字符類型字符類型char整整 型型實(shí)型實(shí)型單精度型單精度型float雙精度型雙精度型double結(jié)構(gòu)體結(jié)構(gòu)體struct共用體共用體union短整型短整型short長整型長整型long整型整型int數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范

2、圍3. 其上可進(jìn)行的操作基本數(shù)據(jù)類型的特點(diǎn):其值不可以再分為其它數(shù)據(jù)類型由已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來由已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的。定義的。即一個(gè)構(gòu)造類型的值可以分解成若干個(gè)即一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員成員”或或“元素元素”。每個(gè)成員可能是一個(gè)基本。每個(gè)成員可能是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。數(shù)組數(shù)組枚舉類型枚舉類型定義類型定義類型typedeftypedef43.1 常量與變量常量常量: :在程序運(yùn)行過程中在程序運(yùn)行過程中,其值不能被改變的量稱其值不能被改變的量稱為常量。為常量。常量區(qū)分為不同的類型:常量區(qū)分為不同

3、的類型:整型整型 100100,125125,-100-100,0 0實(shí)型實(shí)型 3.14 3.14 , 0.1250.125,-3.789-3.789字符型字符型 a, ba, b,22符號常量符號常量 為了使用方便,可用一個(gè)標(biāo)識(shí)符(符號名)來代表為了使用方便,可用一個(gè)標(biāo)識(shí)符(符號名)來代表一個(gè)常量。一個(gè)常量。5例例3-13-1在程序中使用符號常量在程序中使用符號常量 #define PRICE 30#include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); 運(yùn)行結(jié)果運(yùn)行結(jié)

4、果: total=300total=300程序中用程序中用#define#define命令行定義命令行定義PRICEPRICE代代表常量表常量30,30,此后凡在本文件中出現(xiàn)的此后凡在本文件中出現(xiàn)的PRICEPRICE都代表都代表30,30,可以和常量一樣進(jìn)行運(yùn)算可以和常量一樣進(jìn)行運(yùn)算如再用賦值語句給如再用賦值語句給PRICEPRICE賦值是錯(cuò)的賦值是錯(cuò)的PRICE=40;PRICE=40; / /* * 錯(cuò)誤,不能給符號錯(cuò)誤,不能給符號 常量賦值常量賦值* */ /不能對符號常量指定類型不能對符號常量指定類型intint PRICE; PRICE; / /* * 錯(cuò)誤,錯(cuò)誤,PRICEPRI

5、CE不是不是 變量,不能指定類型變量,不能指定類型 * */ / 定義格式: #define#define 符號常量符號常量 常量常量符號常量一般用大寫字母符號常量一般用大寫字母在此命令行的后面不加分號在此命令行的后面不加分號63.1 常量與變量變量變量: :在程序運(yùn)行過程中在程序運(yùn)行過程中,其值發(fā)生改變的量稱為其值發(fā)生改變的量稱為變量。變量。變量變量代表內(nèi)存中具有特定屬性的代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運(yùn)行它用來存放數(shù)據(jù),也就是變量的值,在程序運(yùn)行期間,這些值是可以改變的期間,這些值是可以改變的73.1 常量與變量變量名變量名實(shí)際上是

6、以一個(gè)名字代表實(shí)際上是以一個(gè)名字代表一個(gè)內(nèi)存地址一個(gè)內(nèi)存地址,在對程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名在對程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對應(yīng)的內(nèi)存地址。分配對應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)中讀取數(shù)據(jù)注意區(qū)注意區(qū)分變量分變量名和變名和變量值量值83.1 常量與變量標(biāo)識(shí)符標(biāo)識(shí)符v定義:用來標(biāo)識(shí)變量、函數(shù)、數(shù)組等的字符序定義:用來標(biāo)識(shí)變量、函數(shù)、數(shù)組等的字符序列列vC語言中,有語言中,有3類標(biāo)識(shí)符:關(guān)鍵字,系統(tǒng)預(yù)定義類標(biāo)識(shí)符:關(guān)鍵字,系統(tǒng)預(yù)定義的標(biāo)識(shí)符的標(biāo)識(shí)符 ,用

7、戶標(biāo)識(shí)符,用戶標(biāo)識(shí)符v組成:組成:l只能由只能由字母字母、數(shù)字?jǐn)?shù)字、下劃線下劃線組成,且第一個(gè)字母組成,且第一個(gè)字母必須是字母或下劃線必須是字母或下劃線l大小寫敏感(如:大小寫敏感(如:page和和Page是兩個(gè)不同的標(biāo)是兩個(gè)不同的標(biāo)識(shí)符)識(shí)符),一般變量名用小寫字母表示一般變量名用小寫字母表示l不能使用關(guān)鍵字、預(yù)定義不能使用關(guān)鍵字、預(yù)定義標(biāo)識(shí)符標(biāo)識(shí)符(如庫函數(shù)名(如庫函數(shù)名printf等等)93.1 常量與變量標(biāo)識(shí)符標(biāo)識(shí)符v有效長度:隨系統(tǒng)而異,但至少前有效長度:隨系統(tǒng)而異,但至少前8個(gè)字符有效,個(gè)字符有效,建議建議標(biāo)識(shí)符標(biāo)識(shí)符的長度最好不要超過的長度最好不要超過8個(gè)字符個(gè)字符 P29v命名

8、原則:命名原則:l見名知意見名知意l不宜混淆不宜混淆 如如l與與I, o與與0例:判斷下列標(biāo)識(shí)符的合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_char ab _above $123M.D.John3days#33char$123ab103.1 常量與變量在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用變量則必須先定義后使用v變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n;決定分配字節(jié)數(shù)和決定分配字節(jié)數(shù)和數(shù)的表示范圍以及數(shù)的表示范圍以及其上可進(jìn)行的操作其上可進(jìn)行的操作例: int a,b,c;

9、float data;合法標(biāo)識(shí)符v變量初始化變量初始化:定義時(shí)賦初值定義時(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;編譯程序根據(jù)變量定義為其編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元分配指定字節(jié)的內(nèi)存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機(jī)數(shù)例1 int student; stadent=19; /Undefined symbol statent in function main 例2 float a,b,c; c=a%b; /

10、Illegal use of floating point in function main v變量定義位置:變量定義位置:一般一般放在函數(shù)開頭放在函數(shù)開頭void main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);v允許在一個(gè)類型說明符后,說明多個(gè)相同類型允許在一個(gè)類型說明符后,說明多個(gè)相同類型的變量。各變量名之間用逗號間隔。類型說明的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個(gè)空格間隔。符與變量名之間至少用一個(gè)空格間隔。v最后一個(gè)變量名之后必須以最后一個(gè)變量名之后必須以“;

11、”號結(jié)尾號結(jié)尾。void main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執(zhí)行語句例例: int a,b,c; float data;113.2 整型數(shù)據(jù)整型常量的表示形式整型常量的表示形式 三種形式:v十進(jìn)制整數(shù):由數(shù)字由數(shù)字09和正負(fù)號表示。如和正負(fù)號表示。如 123, -456,0v八進(jìn)制整數(shù):由由數(shù)字?jǐn)?shù)字0開頭開頭,后跟數(shù)字后跟數(shù)字07表示。如表示。如 0123,011v十六進(jìn)制整數(shù):由由0 x開頭開頭,后跟后跟09,af,AF 表示表示。如如0 x123,0 xff在程序中

12、是根據(jù)在程序中是根據(jù)前綴來區(qū)分各種前綴來區(qū)分各種進(jìn)制數(shù)的。因此進(jìn)制數(shù)的。因此在書寫常數(shù)時(shí)不在書寫常數(shù)時(shí)不要把前綴弄錯(cuò)造要把前綴弄錯(cuò)造成結(jié)果不正確。成結(jié)果不正確。 問題:0123 = ( )100 x123 = ( )100 xff = ( )1083291255問題:問題:0123 = ( )100 x123 = ( )100 xff = ( )10123.2 整型數(shù)據(jù)整型變量整型變量v整型變量用來存放整數(shù)。整型變量用來存放整數(shù)。vC語言中有以下語言中有以下3類整型變量類整型變量 :基本整型,短整:基本整型,短整型,長整型型,長整型基本整型基本整型 以以intint表示表示短整型短整型 以以s

13、hort intshort int或或shortshort表示表示長整型長整型 以以long intlong int或或longlong表示表示133.2 整型數(shù)據(jù)整型變量整型變量v一般情況下,存儲(chǔ)整數(shù)時(shí)存儲(chǔ)單元中的第一個(gè)二進(jìn)位一般情況下,存儲(chǔ)整數(shù)時(shí)存儲(chǔ)單元中的第一個(gè)二進(jìn)位用來代表數(shù)值符號,而在實(shí)際應(yīng)用中,變量的值常常用來代表數(shù)值符號,而在實(shí)際應(yīng)用中,變量的值常常是正的是正的 ,所以存儲(chǔ)單元全部用來存儲(chǔ)數(shù)值本身,此定,所以存儲(chǔ)單元全部用來存儲(chǔ)數(shù)值本身,此定義義為為無符號整數(shù)無符號整數(shù)。所以歸納起來,在。所以歸納起來,在C語言中,可以語言中,可以定義和使用定義和使用6種整型變量種整型變量共六種共

14、六種有符號基本整型有符號基本整型有符號短整型有符號短整型有符號長整型有符號長整型無符號基本整型無符號基本整型無符號短整型無符號短整型無符號長整型無符號長整型signed int signed short intsigned long intunsigned intunsigned short intunsigned long int143.2 整型數(shù)據(jù)整型變量整型變量vANSI C標(biāo)準(zhǔn)沒有具體規(guī)定各類數(shù)據(jù)在內(nèi)存中所標(biāo)準(zhǔn)沒有具體規(guī)定各類數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù),由各占的字節(jié)數(shù),由各C編譯系統(tǒng)自行決定。常見的編譯系統(tǒng)自行決定。常見的有兩種:(有兩種:(1)Turbo C等,等,short:2字節(jié),

15、字節(jié),int:2字節(jié),字節(jié),long:4字節(jié);(字節(jié);(2)Visual C+等,等, short:2字節(jié),字節(jié),int:4字節(jié),字節(jié),long:4字節(jié)字節(jié)v例:整數(shù)例:整數(shù)13的存儲(chǔ)情況的存儲(chǔ)情況 P34153.2 整型數(shù)據(jù)整型變量整型變量v整數(shù)類型的有關(guān)數(shù)據(jù)1615 14 13 12 11 109876543210有符號數(shù)有符號數(shù)無符號數(shù)無符號數(shù)0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 132767327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 032766327660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 0 0 0 0

16、 0 0 0 0 0 0 0 0 0 0 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1(補(bǔ)碼補(bǔ)碼)655351 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0-2655341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1-32767327691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-3276832768173.2 整型數(shù)據(jù)-32768-32768的補(bǔ)碼問題的補(bǔ)碼問題v首先要知道的是計(jì)算機(jī)中補(bǔ)碼的表示是唯一且連續(xù)的!首先要知道的是計(jì)算機(jī)中補(bǔ)碼的表示是唯一且連續(xù)的!v若用若用16位來存儲(chǔ),位來存儲(chǔ),-32768不能用原碼表

17、示出來。所以不能用原碼表示出來。所以-32768只能通過只能通過-32767-1來求:來求:-1的補(bǔ)碼為的補(bǔ)碼為11111111 11111111-32767的補(bǔ)碼為的補(bǔ)碼為10000000 00000001所以加起來為:所以加起來為:(1)10000000 00000000 (1)被舍去了。被舍去了。v又因?yàn)橛忠驗(yàn)?0000000 00000000沒有用來表示其他任何數(shù),沒有用來表示其他任何數(shù),所以所以10000000 00000000就被用來表示就被用來表示-32768,這也驗(yàn),這也驗(yàn)證了補(bǔ)碼的唯一性和連續(xù)性!而且這也證明了證了補(bǔ)碼的唯一性和連續(xù)性!而且這也證明了16位的整位的整數(shù)的范圍是

18、數(shù)的范圍是“-3276832767”。183.2 整型數(shù)據(jù)v整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式l數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放例:例:int i; /* 定義為整型變量定義為整型變量 */i=10; /* 給給i賦以整數(shù)賦以整數(shù)10 */0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010ii193.2 整型數(shù)據(jù)整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式v實(shí)際上,實(shí)際上,數(shù)值是以補(bǔ)碼表示的數(shù)值是以補(bǔ)碼表示的。一個(gè)正整數(shù)的補(bǔ)碼。一個(gè)正整數(shù)的補(bǔ)碼和該數(shù)的原碼相同。負(fù)數(shù)的補(bǔ)碼是:和該數(shù)的原碼相同。負(fù)數(shù)的補(bǔ)碼是:符號位為符號位為1,數(shù)

19、,數(shù)值位值位將該數(shù)的絕對值的二進(jìn)制形式,按位取反再加將該數(shù)的絕對值的二進(jìn)制形式,按位取反再加1v例:求例:求-10的補(bǔ)碼的補(bǔ)碼1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0-10的原碼的原碼取反取反1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1得得-10的補(bǔ)碼的補(bǔ)碼1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0203.2 整型數(shù)據(jù)整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出(自看)整型常量的類型整型常量的類型v從整型常量的字面上就可以區(qū)分它是什么類型從整型常量的字面上就可以區(qū)分它是什么類型l一個(gè)整數(shù),如果其值在一個(gè)整數(shù),如果其值在-32768+32767范圍內(nèi),

20、認(rèn)為它是范圍內(nèi),認(rèn)為它是int型型,它可以賦值給,它可以賦值給int型和型和long int型變量型變量l一個(gè)整數(shù),如果其值超過了上述范圍,而在一個(gè)整數(shù),如果其值超過了上述范圍,而在-2147483637+2147483647范圍內(nèi),則認(rèn)為它是為范圍內(nèi),則認(rèn)為它是為長整型長整型??梢詫⑺x值給一個(gè)可以將它賦值給一個(gè)long int型變量型變量l在一個(gè)整常量后面加一個(gè)字母在一個(gè)整常量后面加一個(gè)字母l或或L,則認(rèn)為是,則認(rèn)為是long int型型常量,常量,例如例如123l、432L、0L等等l一個(gè)整常量后面加一個(gè)字母一個(gè)整常量后面加一個(gè)字母u或或U,認(rèn)為是,認(rèn)為是unsigned int型型,如

21、如12345u在內(nèi)存中按在內(nèi)存中按unsigned int規(guī)定的方式存放規(guī)定的方式存放(存儲(chǔ)單元存儲(chǔ)單元中最高位不作為符號位,而用來存儲(chǔ)數(shù)據(jù)中最高位不作為符號位,而用來存儲(chǔ)數(shù)據(jù))213.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型常量的表示形式浮點(diǎn)型常量的表示形式v在語言中,實(shí)數(shù)只采用十進(jìn)制在語言中,實(shí)數(shù)只采用十進(jìn)制 l十進(jìn)制小數(shù)形式十進(jìn)制小數(shù)形式:(:(必須有小數(shù)點(diǎn)必須有小數(shù)點(diǎn)) 如如0.123, .123,(絕對值小于絕對值小于1的實(shí)數(shù),其小數(shù)點(diǎn)前的實(shí)數(shù),其小數(shù)點(diǎn)前面的面的0可以省略可以省略) 123.0, 0.0, 123. ,0.123l指數(shù)形式:指數(shù)形式:(e或或E之前必須有數(shù)字;指數(shù)必須為之前必須

22、有數(shù)字;指數(shù)必須為整數(shù);在字母整數(shù);在字母e或或E的前后及數(shù)字之間不能插入空的前后及數(shù)字之間不能插入空格格)如)如12.3e3 ,123E2, 1.23e4 223.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型常量的表示形式浮點(diǎn)型常量的表示形式 在字母在字母e e(或(或E E)之前的小數(shù)部分中,小數(shù)點(diǎn))之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字左邊應(yīng)有一位(且只能有一位)非零的數(shù)字例如例如: : 123.456123.456可以表示為:可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.12

23、3456e3, 0.0123456e4, 0.00123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的1.23456e21.23456e2稱為稱為“規(guī)范化的指數(shù)形式規(guī)范化的指數(shù)形式”一個(gè)浮點(diǎn)數(shù)在用指數(shù)形式輸出時(shí),是按規(guī)范化一個(gè)浮點(diǎn)數(shù)在用指數(shù)形式輸出時(shí),是按規(guī)范化的指數(shù)形式輸出的。的指數(shù)形式輸出的。233.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型常量的表示形式浮點(diǎn)型常量的表示形式 指的是小數(shù)部分中小數(shù)點(diǎn)前的數(shù)字為指的是小數(shù)部分中小數(shù)點(diǎn)前的數(shù)字為0 0,小,小數(shù)點(diǎn)后第數(shù)點(diǎn)后第1 1位數(shù)字非零的表示形式位數(shù)字非零的表示形式例如例如: : 123.456123.45

24、6可以表示為:可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的0.123456e30.123456e3稱為稱為“標(biāo)準(zhǔn)化的指數(shù)形式標(biāo)準(zhǔn)化的指數(shù)形式”標(biāo)準(zhǔn)化的指數(shù)形式用于存儲(chǔ)。標(biāo)準(zhǔn)化的指數(shù)形式用于存儲(chǔ)。243.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型變量浮點(diǎn)型變量v浮點(diǎn)型變量分為單精度(浮點(diǎn)型變量分為單精度(float型)、雙精度型)、雙精度(double型

25、)和長雙精度型(型)和長雙精度型(long double)三)三類形式。類形式。253.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型變量浮點(diǎn)型變量v浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:l與整型數(shù)據(jù)的存儲(chǔ)方式不同,與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照浮點(diǎn)型數(shù)據(jù)是按照標(biāo)準(zhǔn)化的二進(jìn)制指數(shù)形式存儲(chǔ)的標(biāo)準(zhǔn)化的二進(jìn)制指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。263.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型常量的類型浮點(diǎn)型常量的類型v浮點(diǎn)型常量不分單、雙精度,都浮點(diǎn)型常量不分單、雙精度,都按雙精度按雙精度double型處理

26、型處理 v在浮點(diǎn)型常量后加字母在浮點(diǎn)型常量后加字母f或或F,(如,(如1.65f, 654.87F),認(rèn)為它是),認(rèn)為它是float 型型v如果把一個(gè)浮點(diǎn)型常量賦給一個(gè)單精度變量如果把一個(gè)浮點(diǎn)型常量賦給一個(gè)單精度變量f,系,系統(tǒng)給出警告,警告不影響連接和運(yùn)行最后結(jié)果。但統(tǒng)給出警告,警告不影響連接和運(yùn)行最后結(jié)果。但只取其結(jié)果前只取其結(jié)果前7位賦給浮點(diǎn)型變量位賦給浮點(diǎn)型變量f(一個(gè)單精度浮一個(gè)單精度浮點(diǎn)型變量只能保證的有效數(shù)字是點(diǎn)型變量只能保證的有效數(shù)字是7位,一個(gè)雙精度位,一個(gè)雙精度浮點(diǎn)型變量能保證的有效數(shù)字是浮點(diǎn)型變量能保證的有效數(shù)字是16位位)273.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))浮點(diǎn)型變量浮點(diǎn)型變

27、量v浮點(diǎn)型數(shù)據(jù)的舍入誤差:浮點(diǎn)型數(shù)據(jù)的舍入誤差:例例 浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差#include void main()() float a; a=3.141592612; printf(af,a);); 運(yùn)行結(jié)果運(yùn)行結(jié)果:a=3.141593 :由于:由于a a是單精是單精度浮點(diǎn)型變量,度浮點(diǎn)型變量,只能提供只能提供7 7位有效位有效數(shù)字,后面幾位數(shù)字,后面幾位被忽略了被忽略了 283.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))例例3-4 3-4 浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差#includevoid main() float a,b; a = 123456.789e5; b = a +

28、 20 ; printf(%f,%fn,a,b); 為什么輸出a和b的值相等?293.3 浮點(diǎn)型數(shù)據(jù)(實(shí)數(shù))例例3-6 3-6 #includevoid main() float a; double b; a=33333.33333; b=33333.33333333333333; printf(a=%fnb=%fn,a,b); 運(yùn)行結(jié)果運(yùn)行結(jié)果:a=33333.332031b=33333.333333 303.4 字符型數(shù)據(jù)字符常量字符常量v定義定義:用用單引號單引號括起來的單個(gè)括起來的單個(gè)字符字符。v只能包含一個(gè)字符只能包含一個(gè)字符a a, , A A, , 1 1abcabc、“a a”

29、313.4 字符型數(shù)據(jù)字符常量字符常量v字符常量的字符常量的值值:該字符的:該字符的ASCIIASCII碼碼值。值。字符型數(shù)據(jù)與整字符型數(shù)據(jù)與整數(shù)等價(jià)數(shù)等價(jià),等價(jià)整數(shù)值為該字符對應(yīng)的,等價(jià)整數(shù)值為該字符對應(yīng)的ASCIIASCII碼。字符型碼。字符型數(shù)據(jù)數(shù)據(jù)與與整型整型數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算v轉(zhuǎn)義字符轉(zhuǎn)義字符: :反斜線反斜線“ ”后面跟一個(gè)或幾個(gè)字符后面跟一個(gè)或幾個(gè)字符v轉(zhuǎn)義字符是一種特殊的字符常量轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符具有特定轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義轉(zhuǎn)義”字符。字符。例如,在前面各例題例如,在

30、前面各例題printfprintf函數(shù)的格式串中用到的函數(shù)的格式串中用到的“nn”就是一個(gè)轉(zhuǎn)義字符,其意義是就是一個(gè)轉(zhuǎn)義字符,其意義是“換行換行”。轉(zhuǎn)義字。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代符主要用來表示那些用一般字符不便于表示的控制代碼碼。如如 A A6565, a a9797, 0 048 , 48 , nn1010例例 a=a=D D; ; / /* * a=68; a=68; * */ / x= x=A A+5; +5; / /* * x=65+5; x=65+5; * */ / s= s=! !+ +G G / /* * s=33+71;s=33+71;* */ /

31、323.4 字符型數(shù)據(jù)字符常量字符常量v轉(zhuǎn)義字符及其作用轉(zhuǎn)義字符及其作用 廣義地講,廣義地講,語言字符集語言字符集中的任何一個(gè)字符均可用中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示轉(zhuǎn)義字符來表示。表中的。表中的dddddd和和xhhxhh正是為此而提正是為此而提出的。出的。dddddd和和hhhh分別為八分別為八進(jìn)制和十六進(jìn)制的進(jìn)制和十六進(jìn)制的ASCIIASCII代碼代碼如如 101 -A 012 -n 102 -B x61 -a 60 -0 483 -( )333.4 字符型數(shù)據(jù)字符常量字符常量例例 轉(zhuǎn)義字符舉例轉(zhuǎn)義字符舉例#include void main()() printf(101 x42

32、Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);; 說明說明:A- 101- x41-65運(yùn)行結(jié)果:運(yùn)行結(jié)果:(屏幕顯示屏幕顯示)A B CI say:“How are you?”C ProgramTurbo C343.4 字符型數(shù)據(jù)字符常量字符常量例例 轉(zhuǎn)義字符舉例轉(zhuǎn)義字符舉例#include void main()() printf(“Yb=n”); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:屏幕顯示:屏幕顯示:=打印機(jī)輸出:打印機(jī)輸出:自學(xué)自學(xué)P40P40例例3-73-7 例例3-83-8353.4 字符型數(shù)據(jù)字符常量

33、字符常量v常用字符的常用字符的ASCIIASCII碼如下(需記?。捍a如下(需記住): AZ 6590 a z 97122 09 4857 (空格(空格) 32 n (換行符換行符) 10 r (回車符回車符) 13特別注意特別注意: 字符字符0 等于整數(shù)等于整數(shù)48 , 字符字符0 等于整數(shù)等于整數(shù)0,即空操作字符即空操作字符 363.4 字符型數(shù)據(jù)字符變量字符變量v字符型變量用來存放字符常量,注意只能字符型變量用來存放字符常量,注意只能放一個(gè)字符。放一個(gè)字符。v字符變量的定義形式如下字符變量的定義形式如下:char c1,c2;v在程序中可以用下面語句對在程序中可以用下面語句對c1,c2賦

34、值賦值: c1a;c2 b ;v一個(gè)字符變量在內(nèi)存中一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)占一個(gè)字節(jié)373.4 字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法v一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是并不是把該字符的字型放到內(nèi)存中去,而是將將該字符的相應(yīng)的該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中代碼放到存儲(chǔ)單元中。例例a=x;a=x; b=y; b=y;01 111000011110 01a:b:383.4 字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及

35、其使用方法v這樣使這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。 一個(gè)字符數(shù)據(jù)既可以以字符形式輸出一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整也可以以整數(shù)形式輸出數(shù)形式輸出。以字符形式輸出時(shí)以字符形式輸出時(shí),系統(tǒng)先將存儲(chǔ)系統(tǒng)先將存儲(chǔ)單元中的單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,碼轉(zhuǎn)換成相應(yīng)字符, 然后輸出。然后輸出。 以整數(shù)形式輸出時(shí)以整數(shù)形式輸出時(shí),直接將,直接將ASCII碼作為整數(shù)輸碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算, 此時(shí)相此時(shí)相當(dāng)于對它們的當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)算。碼進(jìn)行算術(shù)運(yùn)算。 39例例3-9 3-9

36、向字符變量賦以整數(shù)。向字符變量賦以整數(shù)。#include void main() char a,b; a=120; b=121; printf(“%c,%cn%d,%dn”,a,b,a,b); 在第在第4 4和第和第5 5行中,將整數(shù)行中,將整數(shù)120120和和121121分別賦給分別賦給a a和和b b,它的作用相當(dāng)于以下兩個(gè)賦值語句:,它的作用相當(dāng)于以下兩個(gè)賦值語句:a ax x b by y; ; 因?yàn)橐驗(yàn)閤 x和和y y的的ASCIIASCII碼為碼為120120和和121121運(yùn)行結(jié)果運(yùn)行結(jié)果: x,yx,y 120,121 120,12140例例3-10 3-10 大小寫字母的轉(zhuǎn)換

37、大小寫字母的轉(zhuǎn)換#include void main() char a,b; a=x; b=y; a=a-32; b=b-32; printf(“c,cn%d,%dn”,a,b,a,b );); 程序的作用是將兩個(gè)小寫字母程序的作用是將兩個(gè)小寫字母x x和和y y轉(zhuǎn)換成大轉(zhuǎn)換成大寫字母寫字母X X和和Y Y。從。從ASCIIASCII代碼表中可以看到每一個(gè)代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的小寫字母比它相應(yīng)的大寫字母的ASCIIASCII碼大碼大3232。語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 運(yùn)行結(jié)果運(yùn)行結(jié)果: X,YX,Y 88,89

38、 88,89413.43.4 字符型數(shù)據(jù)字符型數(shù)據(jù)字符串常量字符串常量v字符串常量是一對字符串常量是一對雙引號雙引號括起來的括起來的字符序列字符序列。v合法的字符串常量合法的字符串常量: :“How do you do.”, “CHINA”“How do you do.”, “CHINA”, “ “a” a” , “$123.45”$123.45”v可以輸出一個(gè)字符串,如可以輸出一個(gè)字符串,如printf(“Howprintf(“How do you do.”) do you do.”);423.43.4 字符型數(shù)據(jù)字符型數(shù)據(jù)字符串常量字符串常量v是字符常量,是字符常量, “ “a”a”是字符

39、串常量,是字符串常量,二者不同。二者不同。如:如:假設(shè)被指定為字符變量假設(shè)被指定為字符變量 :char c;char c;c= a;c= a;c c “a”a” ;c c “CHINA”;CHINA”; :不能把一個(gè)字符串常量賦給一個(gè)字不能把一個(gè)字符串常量賦給一個(gè)字符變量。符變量。433.43.4 字符型數(shù)據(jù)字符型數(shù)據(jù)字符串常量字符串常量v存儲(chǔ):存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)每個(gè)字符串尾自動(dòng)加一個(gè) 0 0 作為字符串結(jié)束標(biāo)志作為字符串結(jié)束標(biāo)志( (在寫字符串時(shí),不在寫字符串時(shí),不要加要加0)0)v字符常量與字符串常量不同字符常量與字符串常量不同字符串字符串“hello”hello”在內(nèi)存在內(nèi)存中

40、中h e l l o 0a a 0a“a”沒有沒有字符串變字符串變量量,用字符數(shù),用字符數(shù)組存放組存放 字符串常量占的內(nèi)存字字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)節(jié)數(shù)等于字符串中字節(jié)數(shù)加數(shù)加1 1。但在輸出時(shí)不輸。但在輸出時(shí)不輸出出00。 44l形式形式l賦值賦值l存儲(chǔ)存儲(chǔ)45:lANSI CANSI C標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù)而是由各計(jì)算機(jī)系統(tǒng)自行占內(nèi)存的字節(jié)數(shù)而是由各計(jì)算機(jī)系統(tǒng)自行決定。決定。 Turbo CTurbo C中,中,intint型和型和shortshort型數(shù)型數(shù)據(jù)都是據(jù)都是2 2個(gè)字節(jié),即個(gè)字節(jié),即1616個(gè)二進(jìn)制位。個(gè)二

41、進(jìn)制位。longlong型數(shù)據(jù)是型數(shù)據(jù)是4 4個(gè)字節(jié),個(gè)字節(jié),3232位。而位。而VC+VC+則給則給shortshort型數(shù)據(jù)分配型數(shù)據(jù)分配2 2個(gè)字節(jié),個(gè)字節(jié),1616位,位,intint和和longlong型數(shù)據(jù)都是型數(shù)據(jù)都是4 4個(gè)字節(jié),個(gè)字節(jié),3232位位 。46:l對字符型都是對字符型都是1 1字節(jié)。字節(jié)。l對浮點(diǎn)數(shù)一般都是對浮點(diǎn)數(shù)一般都是floatfloat:4 4字節(jié);字節(jié);double:8double:8字節(jié)。字節(jié)。l可以用可以用sizeofsizeof( (類型名)或類型名)或sizeofsizeof( (變量名)變量名)測出所用測出所用C C系統(tǒng)給各類數(shù)據(jù)分配的字節(jié)數(shù)。系

42、統(tǒng)給各類數(shù)據(jù)分配的字節(jié)數(shù)。47上機(jī)調(diào)試程序上機(jī)調(diào)試程序1 1:#includestdio.h#include Void main()Void main() int int a; a; long b; long b; float f; float f; double d; double d; char c; char c;printf(nint:%dnlong:%dnfloat:%dndouble:printf(nint:%dnlong:%dnfloat:%dndouble:%dnchar:%dn%dnchar:%dn,sizeof(a),sizeof(b),sizeof,sizeof(a),s

43、izeof(b),sizeof(f),sizeof(d),sizeof(c(f),sizeof(d),sizeof(c);); 483.53.5 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算:整型(包括:整型(包括int,short,longint,short,long)、浮點(diǎn)型(包括)、浮點(diǎn)型(包括float,doublefloat,double)可以混合運(yùn)算。因此,)可以混合運(yùn)算。因此,整整型、浮點(diǎn)型、字符型數(shù)據(jù)間可以混合運(yùn)算型、浮點(diǎn)型、字符型數(shù)據(jù)間可以混合運(yùn)算。v在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型成同一類型, ,然后進(jìn)行運(yùn)算。然后進(jìn)行運(yùn)算。493.53.5 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 必定的轉(zhuǎn)換必定的轉(zhuǎn)換運(yùn)算對象類型不同運(yùn)算對象類型不同時(shí)轉(zhuǎn)換時(shí)轉(zhuǎn)換轉(zhuǎn)換的一般規(guī)律:轉(zhuǎn)換的一般規(guī)律:轉(zhuǎn)換按數(shù)據(jù)長度增加的轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不降低。方向進(jìn)行,以保證精度不降低。這種類型轉(zhuǎn)換是由系統(tǒng)這種類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的。自動(dòng)進(jìn)行的。503.5 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 char ch; int i; float f; double d;ch/i + f*

溫馨提示

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

最新文檔

評論

0/150

提交評論