常量與變量的分類_第1頁
常量與變量的分類_第2頁
常量與變量的分類_第3頁
常量與變量的分類_第4頁
常量與變量的分類_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

整型常量八進制整常數(shù)八進制整常數(shù)必須以0開頭,即以0作為八進制數(shù)的前綴。數(shù)碼取值為0?7。八進制數(shù)通常是無符號數(shù)。以下各數(shù)是合法的八進制數(shù):015(十進制為13)0101(十進制為65)0177777(十進制為65535)以下各數(shù)不是合法的八進制數(shù):256(無前綴0)03A2(包含了非八進制數(shù)碼)-0127(出現(xiàn)了負號)十六進制整常數(shù)十六進制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0?9,A?F或a?f。以下各數(shù)是合法的十六進制整常數(shù):0X2A(十進制為42) 0XA0(十進制為160)0XFFFF(十進制為65535)以下各數(shù)不是合法的十六進制整常數(shù):5A(無前綴0X) 0X3H(含有非十六進制數(shù)碼)十進制整常數(shù)十進制整常數(shù)沒有前綴。其數(shù)碼為0?9。以下各數(shù)是合法的十進制整常數(shù):237 -56865535 1627以下各數(shù)不是合法的十進制整常數(shù):023(不能有前導(dǎo)0) 23D(含有非十進制數(shù)碼)在程序中是根據(jù)前綴來區(qū)分各種進制數(shù)的。因此在書寫常數(shù)時不要把前綴弄錯造成結(jié)果不正確。整型常數(shù)的后綴在16位字長的機器上,基本整型的長度也為16位,因此表示的數(shù)的范圍也是有限定的:十進制無符號整常數(shù)的范圍為0?65535,有符號數(shù)為-32768?+32767。八進制無符號數(shù)的表示范圍為0?0177777。十六進制無符號數(shù)的表示范圍為0X0?0XFFFF或0x0?0xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或T”來表示的。例如:十進制長整常數(shù)158L(十進制為158)358000L(十進制為-358000)八進制長整常數(shù)012L(十進制為10)077L(十進制為63)0200000L(十進制為65536)十六進制長整常數(shù)0X15L(十進制為21)0XA5L(十進制為165)0X10000L(十進制為65536)長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對158L,因為是長整型量,C編譯系統(tǒng)將為它分配4個字節(jié)存儲空間。而對158,因為是基本整型,只分配2個字節(jié)的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數(shù)也可用后綴表示,整型常數(shù)的無符號數(shù)的后綴為 “U”或“u”。例如:358u,0x38Au,235Lu均為無符號數(shù)。前綴,后綴可同時使用以表示各種類型的數(shù)。如0XA5Lu表示十六進制無符號長整數(shù)A5,其十進制為165。整型變量分類整型變量可以分為以下4類:短整型,類型關(guān)鍵字為short[int]。類型說明符為shortint或short'C110F1。所占字節(jié)和取值范圍會因不同的編譯系統(tǒng)而有差異。對于16字機,shortint占2個字節(jié),在大多數(shù)的32位機中,shortint占4個字節(jié)。但總的來說,shortint至少16位,也就是2個字節(jié)基本整型,類型關(guān)鍵字為int。類型說明符為int,在內(nèi)存中占4個字節(jié)(不同系統(tǒng)可能有差異,此處原為2,經(jīng)查證windows系統(tǒng)下為4,VAX系統(tǒng)也如此),其取值為基本整常數(shù)⑶長整型,類型關(guān)鍵字為long[int]。類型說明符為longint或long,在內(nèi)存中占4個字節(jié),其取值為長整常數(shù)。在任何的編譯系統(tǒng)中,長整型都是占4個字節(jié)。在一般情況下,其所占的字節(jié)數(shù)和取值范圍與基本型相同。(4)無符號整型,類型關(guān)鍵字為unsigned[int]或unsignedshort或unsignedlong。unsigned[int]表示無符號基本整型;unsignedshort表示無符號短整型;unsignedlong表示無符號長整型。無符號整型只能用來存儲無符號整數(shù)。類型說明符為unsigned。在編譯系統(tǒng)中,系統(tǒng)會區(qū)分有符號數(shù)和無符號數(shù),區(qū)分的根據(jù)是如何解釋字節(jié)中的最高位,如果最高位被解釋為數(shù)據(jù)位,則整型數(shù)據(jù)則表示為無符號數(shù)無符號型各種無符號類型量所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號類型量相同。但由于省去了符號位,故不能表示負數(shù)。下表列出了TurboC中各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。類型說明符數(shù)的范圍分配字節(jié)數(shù)int-32768-32767shortint-32768~32767signedint-32768-32767unsignedint0-65535longint-2147483648-2147483647unsignedlong0-4294967295變量說明的一般形式為類型說明符變量名標(biāo)識符,變量名標(biāo)識符,...;例如inta,b,c;(a,b,c為整型變量)longx,y;(x,y為長整型變量)unsignedp,q;(p,q為無符號整型變量)定義整型變量的格式是整數(shù)類型1個變量名或用逗號格開的多個變量名類似地,還可以定義unsignedint、unsignedlong型的變量。定義一個變量,意味著在內(nèi)存中給這個變量分配了相應(yīng)大小的存儲空間,同時確定了這個變量值的存儲方式和可以進行的操作占用內(nèi)存字節(jié)數(shù)與值域上述各類型的整型變量占用的內(nèi)存字節(jié)數(shù)隨系統(tǒng)而異,一般以一個機器字(word)存放一個int型數(shù)據(jù),而long型數(shù)據(jù)的字節(jié)數(shù)應(yīng)不小于int型,short型不長于int型。在16位操作系統(tǒng)(例如DOS)中,一般用2字節(jié)存放一個int型數(shù)據(jù);在32位操作系統(tǒng)(例如Win-dows98)中,默認為4字節(jié)。本節(jié)選用16位系統(tǒng),各類整型數(shù)據(jù)的存儲情況及取值范圍如表6-1所示。表6-1各類霍型數(shù)據(jù)的長度程成值苑國類里類型標(biāo)詛符Pr占字節(jié)數(shù)數(shù)信范用irn2-327fiy-327fi?即 -1fci推則^hnri|.|ini|2--技7fi7U|1■丁3~飛心-1長整型一1“嗥|.iine]4-2-11— -1無符兮整型unsigned|in.C|2仆?fi55即2lh-1費符號盈整型un^i^nedlsharI20—65535叩口~21"-1耶號仁整垠unsignedlong4“-好,|顯然,不同類型的整型變量,其值域不同。占用內(nèi)存字節(jié)數(shù)為n的有符號整型變量,其值域為-2n*8-1~2n*8-1-1;無符號整型變量的值域為0~2n*8-1。例如,16位操作系統(tǒng)中的一個int型變量,其值域為-22*8-1~22*8-1-1,即-32768~32767;一個unsigned型變量的值域為0~22*8-1,即0~65535?!纠?.1】整型數(shù)據(jù)程序示例。main()(inta,b,c,d;a=10,b=5;c=a+b;d=32767+1;printf("c=%d\n",c);printf("d=%d\n",d);}程序的運行結(jié)果如下:c=15d=-32768程序中開辟了名為a、b、c、d的4個存儲單元,它們在內(nèi)存中各占兩個字節(jié)。a和b所代表的存儲單元存放10和5,c所代表的存儲單元中存放a和b中值的和15,d中存放32767與1的和,由于受到int型變量取值范圍的限制,d中存放的值為-32768,而不是32768。從圖6-2可以看到32767在內(nèi)存中以二進制的表示形式,最左邊一位是符號位(0表示正,1表示負)。32767再加1后,右邊15個二進制位全為0,最左邊一位為1,它是-32768的補碼形式(數(shù)據(jù)在內(nèi)存中都是以補碼形式存放的)。所以,最終輸出的值為-32768。因此,在使用某類型變量時,一定要注意該變量的取值范圍。浮點型常量浮點型常量有多種寫法。其基本形式為:首先寫整數(shù)部分(可以帶符號),接著寫小數(shù)部分,然后寫e或者E,最后再寫一個有符號整數(shù)。例如:+1.2E+51.5e-9-5.0e10其中e或E被稱為階碼標(biāo)志,e或E后面的有符號整數(shù)被稱為階碼。階碼代表10的階碼次方。例如:+1.2E+5的值是1.2*105。假設(shè)A為e前面的部分,N是e后面的部分,則AeN等于A*10N。此外,正號可以省略不寫。小數(shù)部分也不是必需的,也就是說,5e3也是正確的。階碼標(biāo)志和階碼也可以不寫,如:13.5。小數(shù)點后面,階碼標(biāo)志之前的那部分整數(shù)可以不寫(9.E5),小數(shù)點之前的整數(shù)也可以不寫(.96e-8),但是不能同時都不寫。例如:56..53.143e6.6E-8注意:浮點型常量中不能有空格!例如:3.21e-12/*有空格,錯!*/3.14e5/*有空格,錯!*/浮點型常量默認是double類型的。假設(shè)var_f是float類型的變量,如果有以下語句:var_f=9.0*3.0;那么9.0和3.0都是double類型的常量。它們的乘積也是double型的。在進行賦值的時候,這個乘積被轉(zhuǎn)化成float類型,然后再賦值給var_f。當(dāng)然,我們也可以指定浮點型常量的類型。在浮點型常量后面添上f或者F,編譯器就會用float類型來處理這個常量。例如:1.5f,2.1e6F。在后面添上l或者L的話,編譯器會用longdouble類型來處理這個常量。例如:4.1l,50.2E5L。最好用大寫L,因為小寫l容易和數(shù)字1混淆。標(biāo)準(zhǔn)規(guī)定,對于float型,E后面的階碼的取值范圍至少要達到-37到+37。對double和longdouble的規(guī)定同樣如此。C99新增了一種表示浮點型常量的格式:使用十六進制前綴(0x或0X,0是數(shù)字0,不是字母o),用p或P代替前面所說的e或E,而且階碼代表的是2的階碼次方。例如:0xb.1ep5其中b等于十進制中的11,.1e等于1/16加14/256,p5等于25,也就是512。這個浮點型常量轉(zhuǎn)換成十進制就是:(11+1/16+14/256)*25=5692浮點型數(shù)據(jù)(float,double,logndouble)介紹1.float,double,以及l(fā)ongdouble前面所說的數(shù)據(jù)類型只能用于處理整數(shù)。如果我們需要使用小數(shù),就要使用浮點類型(floating-point)。C提供了三種浮點類型:float,double,以及l(fā)ongdouble。注意,unsigned/signed不能用于修飾浮點類型。浮點類型可以處理正數(shù),也能處理負數(shù)。沒有無符號浮點型。C標(biāo)準(zhǔn)要求float類型至少要能精確表示到小數(shù)點后6位。float一般是32位的。C標(biāo)準(zhǔn)規(guī)定double類型至少要能精確到小數(shù)點后10位。double通常是64位的。C還提供了longdouble類型,目的是提供一種比double更加精確的類型。然而,C標(biāo)準(zhǔn)僅僅規(guī)定longdouble至少要和double一樣精確。longdouble通常96位或者128位。2,聲明浮點型變量浮點型變量的聲明和初始化與整型變量一樣。例如:floatf_1,f_2;doubled_1;floatf_3=6.63;longdoubleld_1;1混淆。標(biāo)準(zhǔn)規(guī)定,對于float型,E后面的階碼的取值范圍至少要達到-37到+37。對double和longdouble的規(guī)定同樣如此。C99新增了一種表示浮點型常量的格式:使用十六進制前綴(0x或0X,0是數(shù)字0,不是字母o),用p或P代替前面所說的e或E,而且階碼代表的是2的階碼次方。例如:0xb.1ep5其中b等于十進制中的11,.1e等于1/16加14/256,p5等于25,也就是512。這個浮點型常量轉(zhuǎn)換成十進制就是:(11+1/16+14/256)*25=5692注意:并非所有編譯器都支持C99新增的這種格式!4.輸出浮點數(shù)格式限定符%f命令printf函數(shù)以十進制形式輸出float和double類型的浮點數(shù);%e命令printf函數(shù)以指數(shù)形式輸出float和double類型的浮點數(shù);%a或%A命令printf函數(shù)以C99新增的那種十六進制格式輸出,但是并非所有編譯器都支持。如果您要輸出longdouble類型的浮點數(shù),請用%Lf,%Le,%La,或者%LA。例如:/*showfloat.c-用兩種形式表示浮點數(shù)*/#include<stdio.h>intmain(void){floatvar_f=5.0;doublevar_df=3.14e2;longdoublevar_ld=6.51e-5;printf("%fisequalto%e",var_f,var_f);printf("%fisequalto%e",var_df,var_df);printf("%Lfisequalto%Le",var_ld,var_ld);return0;}輸出如下:5.000000isequalto5.000000e+00314.000000isequalto3.140000e+020.000065isequalto6.510000e-05注意:以上是我在SuseLinux10下使用gcc4.02編譯運行得到的輸出。如果使用Dev-C++4.9.9.2編譯運行本程序,則不能正常輸出var_ld。大概是因為Dev-C++使用的編譯器gcc中,longdouble是96位的,而它使用函數(shù)庫中的printf函數(shù)卻把longdouble當(dāng)作64位的來處理。浮點數(shù)上溢(Overflow)和下溢(Underflow)假設(shè)您的編譯器中,float最大只能達到3.4e38,如果有以下語句:floattoobig=3.4E38*100.0f;printf("%e”,toobig);這必然導(dǎo)致上溢!因為toobig無法表示3.4E38和100.0f的乘積。上溢的后果過去是沒有定義的,不過現(xiàn)在C規(guī)定如果發(fā)生上溢,則產(chǎn)生一個表示無窮大的特殊值。因此,toobig的值最終會變成一個表示無窮大的特殊值。進而,printf函數(shù)會輸出類似inf或者infinity的字眼。對一個絕對值非常小的浮點數(shù)進行除法,并且導(dǎo)致這個浮點數(shù)的精度降低,稱之為下溢。打個比方,假設(shè)3.1415e-10除以10后,變成0.3141e-10,這就是下溢。單精度浮點型(float) 在C++中,單精度浮點型(float)專指占用32位存儲空間的單精度(single-precision)值。單精度在一些處理器上比雙精度更快而且只占用雙精度一半的空間,但是當(dāng)值很大或很小的時候,它將變得不精確。當(dāng)你需要小數(shù)部分并且對精度的要求不高時,單精度浮點型的變量是有用的。例如,當(dāng)表示美元和分時,單精度浮點型是有用的。在foxpro中,單精度浮點型是為了提供兼容性,浮點數(shù)據(jù)類型在功能上等價于數(shù)值型。 在VB中,Single數(shù)據(jù)類型Single(單精度浮點型)變量存儲為IEEE32位(4個字節(jié))浮點數(shù)值的形式,它的范圍在負數(shù)的時候是從-3.402823E38到-1.401298E-45,而在正數(shù)的時候是從1.401298E-45到3.402823E38。6位有效位數(shù) Single的類型聲明字符為感嘆號⑴。浮點型的選用通常,double是最好的選擇,因為其精度較高,而且導(dǎo)致的運行時耗費相對float也多不了多少。雙精度浮點型定義類型---doublefloat數(shù)據(jù)類型,計算機中表示實型變量的一種變量類型。此數(shù)據(jù)類型與單精度數(shù)據(jù)類型(float)相似,但精確度比float高,編譯時所占的內(nèi)存空間依不同的編譯器而有所不同,通常情況,單精度浮點數(shù)占4字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為3.4E-38?3.4E+38,;雙精度型占8個字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為1.7E-308?1.7E+308。聲明double類型的變量:doublepuotient;初始化double類型的變量:puotient=5.621456873;doublepuotinet=5.12;2雙精度浮點型概括C語言中,雙精度浮點(double)型,占8個字節(jié)(64位)內(nèi)存空間。其數(shù)值范圍為1.7E-308?1.7E+308,雙精度完全保證的有效數(shù)字是15位,16位只是部分數(shù)值有保證,而單精度保證7位有效數(shù)字,部分數(shù)值有8位有效數(shù).浮點型從狹義上說就是科學(xué)記數(shù)法雙精度,即double。double有二,兩個的意思。C標(biāo)準(zhǔn)要求float類型至少要能精確表示到小數(shù)點后6位,并且整數(shù)部分的表示范圍至少要達到10-37--10+37。float一般是32位的。C標(biāo)準(zhǔn)規(guī)定double類型的整數(shù)部分的最小表示范圍和float一樣,都是10-37到10+37,但是它要求double類型的小數(shù)部分至少要能精確到小數(shù)點后10位。double通常是64位的。longdoubleC還提供了longdouble類型,目的是提供一種比double更加精確的類型。然而,C標(biāo)準(zhǔn)僅僅規(guī)定longdouble至少要和double一樣精確。字符常量字符常量是用單引號括起來的單個字符構(gòu)成。有兩種表示方法:0ft新痛上如牯1(UHwftttirtffljQiDt6顧由的丫謠宇中wr理最.7:任才平?jīng)r一種是用該字符的圖形符號,如'b','y','*'。另外還可以用字符的ASCII碼表示,即用反斜符(\)開頭,后跟字符的ASCII碼,這種方法也稱為轉(zhuǎn)義序列表示法,具體方法是:有兩種形式:一種是用字符的八進制ASCII碼,表示為:\odd.這里,odd是八進制值(o可以省略)。另一種使用字符的十六進制ASCII碼值,表示為\0xhh或0Xhh這里hh是兩位十六進制值。如:’A','\101'和'\x41'都表示同一個字符常量。轉(zhuǎn)義序列表示法還可以用來表示一些特殊字符,用來顯示特殊符號或控制輸出格式。在C語言中,字符常量有以下特點:1) 字符常量只能用單引號括起來,不能用雙引號或其它括號。2) 字符常量只能是單個字符,不能是字符串。3) 字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。如'5'和5是不同的?!?'是字符常量,不能參與運算。2C語言在C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號把一個ASCII字符集中的字符括起來作為字符常量。字符常量在內(nèi)存中占一個字節(jié),存放的是字符的ASCII碼(整型數(shù)據(jù))。C語言規(guī)定所有字符常量都作為整型量來處理。1含義字符串常量是一對雙引號括起來的字符序列。例如下面的是合法的字符串常量:"howdoyoudo.","CHINA","a","$123.45"存儲:字符串中的字符依次存儲在內(nèi)存中一塊連續(xù)的區(qū)域內(nèi),并且把空字符\0'自動附加到字符串的尾部作為字符串的結(jié)束標(biāo)志。故字符個數(shù)為n的字符串在內(nèi)存中應(yīng)占(n+1)個字節(jié)可以輸出字符串,例如:printf("howdoyoudo.");2與字符常量的比較c語言允許使用字符串常量外,還允許使用字符常量。字符常量是由一對單引號括起來的單個字符。不能將字符串與字符常量混淆。字符常量可以賦值給字符變量,如"charb='a';”,但不能把一個字符串常量賦給一個字符變量,同時也不能對字符串常量賦值!3與字符數(shù)組的關(guān)系在c語言中沒有專門的字符串變量,如果想將一個字符串存放在變量中以便保存,必須使用字符數(shù)組,即用一個字符型數(shù)組來存放一個字符串,數(shù)組中每一個元素存放一個字符。例如“chara[10]="love".”字符變量定義形式:char標(biāo)識符1,標(biāo)識符2,...,標(biāo)識符n

例如:charc1,c2,c3,ch;c1='a';c2='b';c3='c';ch=?d';說明:字符變量在內(nèi)存中占一個字節(jié)。在內(nèi)存中,是把字符對應(yīng)的ASCII碼值放到存儲單元中.字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用.每個字符變量被分配一個字節(jié)的的內(nèi)存空間,因此只能存放一個字符。字符值是以ASCH碼的形式存放在變量的內(nèi)存單元之中的。如x的十進制ASCII是120,y的十進制ASCII是121。對字符變量a,b賦予'x'和'y'值:a='x';b='y';實際上是在a,b兩個單元內(nèi)存放120和121的二進制代碼a01111000b01111001所以也可以把它們看成是整形變量。C語言允許對整形變量賦予字符值,也允許對字符變量賦整形值。在輸出時,允許把字符變量按整形量輸出,也允許把整形量按字符量輸出。整形量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整形量按字符量處理時,只有低八位字節(jié)參與處理。枚舉型常量與變量枚舉型枚舉型數(shù)據(jù)是ANSIC新標(biāo)準(zhǔn)中提供的一種用戶自定義的數(shù)據(jù)類型,主要用途是用名稱來代替某些有特定含義的數(shù)據(jù),增加程序的可讀性。枚舉型的定義枚舉型需要用戶自己定義,定義方法如下:enum枚舉型名{枚舉常量1,枚舉常量2,...,枚舉常量n};注意在右花括號的后面有一個語句結(jié)束符“分號”。其中:枚舉型名是用戶取的標(biāo)識符;枚舉常量是用戶給常量取的標(biāo)識符。該語句定義了一個名為“枚舉型名”的枚舉類型,該枚舉型中含有n個枚舉常量,每個枚舉常量均有值。C語言規(guī)定枚舉常量的值是依次等于0、1、…、n-l。例如,定義一個表示星期的枚舉型:enumweek{sun,mon,tue,wed,thu,fri,sat};定義的這個枚舉型共有7個枚舉常量,它們的值依次為0、1、2、3、4、5、6。C語言規(guī)定,在定義枚舉型時,可以給枚舉常量賦初值,方法是在枚舉常量的后面跟上“=整型

常量”。例如,表示三原色的枚舉型可以定義如下:enum

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論