




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章程序的數(shù)據(jù)描述(I)--基本數(shù)據(jù)類型與表達(dá)式(基本)主要內(nèi)容數(shù)據(jù)類型的概念C++基本數(shù)據(jù)類型常量與變量操作符表達(dá)式控制臺(tái)的輸入/輸出數(shù)據(jù)類型數(shù)據(jù)是程序的一個(gè)重要組成部分,每個(gè)數(shù)據(jù)都屬于某種數(shù)據(jù)類型。一種數(shù)據(jù)類型可以看成由兩個(gè)集合構(gòu)成:值集:規(guī)定了該數(shù)據(jù)類型能包含哪些值(包括這些值的結(jié)構(gòu))。操作(運(yùn)算)集:規(guī)定了對值集中的值能實(shí)施哪些運(yùn)算。例如:整數(shù)類型就是一種數(shù)據(jù)類型,它的值集就是由整數(shù)所構(gòu)成的集合,它的操作集包括:加、減、乘、除等運(yùn)算。數(shù)據(jù)類型一般可以分為:簡單數(shù)據(jù)類型:值集中的數(shù)據(jù)是不可再分解的簡單數(shù)據(jù),如:整數(shù)類型、實(shí)數(shù)類型等;復(fù)合數(shù)據(jù)類型:值集中的數(shù)據(jù)是由其它類型的數(shù)據(jù)按照一定的方式組織而成,如:表、向量、矩陣等。區(qū)分?jǐn)?shù)據(jù)類型的好處對數(shù)據(jù)進(jìn)行分類,便于對數(shù)據(jù)進(jìn)行描述和處理。提高程序的可靠性,便于編譯程序自動(dòng)進(jìn)行類型一致性檢查。便于產(chǎn)生高效的可執(zhí)行代碼。C++數(shù)據(jù)類型基本數(shù)據(jù)類型C++語言預(yù)先定義好的數(shù)據(jù)類型,常常又稱為標(biāo)準(zhǔn)數(shù)據(jù)類型或內(nèi)置數(shù)據(jù)類型(built-intypes),它們都是簡單類型。構(gòu)造數(shù)據(jù)類型用戶利用語言提供的類型構(gòu)造機(jī)制從其它類型構(gòu)造出來的數(shù)據(jù)類型,它們大多為復(fù)合數(shù)據(jù)類型(枚舉類型除外)。抽象數(shù)據(jù)類型用戶利用數(shù)據(jù)抽象機(jī)制把數(shù)據(jù)與相應(yīng)的操作作為一個(gè)整體來描述的數(shù)據(jù)類型。它們一般為復(fù)合數(shù)據(jù)類型。C++基本數(shù)據(jù)類型C++基本數(shù)據(jù)類型對應(yīng)著能由計(jì)算機(jī)直接表示和處理(機(jī)器指令能對它們直接進(jìn)行操作)的數(shù)據(jù)類型,包括: 整數(shù)類型實(shí)數(shù)類型字符類型邏輯類型空值類型整數(shù)類型整數(shù)類型用于描述通常的整數(shù)。根據(jù)精度分成:intshortint或shortlongint或long一般情況下,
“shortint”的范圍≤“int”的范圍≤“l(fā)ongint”的范圍具體大小由實(shí)現(xiàn)決定,例如shortint占2個(gè)字節(jié)(-32768~32767)longint占4個(gè)字節(jié)(-2147483648~2147483647)int占2個(gè)或4個(gè)字節(jié),一般由計(jì)算機(jī)的字長決定。在計(jì)算機(jī)內(nèi)部,整數(shù)一般用2的補(bǔ)碼表示。無符號(hào)整數(shù)類型為了能對非負(fù)整數(shù)進(jìn)行單獨(dú)描述,C++提供了無符號(hào)整數(shù)類型:unsignedint或unsignedunsignedshortint或unsignedshortunsignedlongint或unsignedlong它們所占的內(nèi)存大小與相應(yīng)的有符號(hào)整數(shù)類型相同,但所表示的最大正整數(shù)比相應(yīng)的有符號(hào)整數(shù)類型所表示的最大正整數(shù)要大(大約一倍)。 實(shí)數(shù)類型實(shí)數(shù)類型又稱浮點(diǎn)型,它用于描述通常的實(shí)數(shù)。根據(jù)精度可分為:
float(單精度型)
double(雙精度型)
longdouble(長雙精度型)一般情況下
“float”的范圍<“double”的范圍≤“l(fā)ongdouble”的范圍float占4個(gè)字節(jié)(-3.402823466×1038~3.402823466×1038)double占8個(gè)字節(jié)(-1.7976931348623158×10308~1.7976931348623158×10308)longdouble占8個(gè)或10個(gè)字節(jié)在計(jì)算機(jī)內(nèi)部,實(shí)數(shù)一般用IEEE754格式表示。字符類型字符類型用于描述文字類型數(shù)據(jù)中的一個(gè)字符。字符在計(jì)算機(jī)中存儲(chǔ)的是它的編碼。char:表示單子節(jié)編碼的字符。wchar_t:表示多字節(jié)編碼的字符。常用的字符集及其編碼ASCII字符集一個(gè)字節(jié)編碼,最多表示256個(gè)字符10個(gè)數(shù)字52個(gè)英文字母(包括大、小寫)其它一些常用符號(hào)(如標(biāo)點(diǎn)符號(hào)、數(shù)學(xué)運(yùn)算符等)0~9十個(gè)數(shù)字、26個(gè)大寫英文字母以及26個(gè)小寫英文字母的編碼各自是連續(xù)的在C++中用char類型描述常用的字符集及其編碼(續(xù))Unicode(國際通用字符集)2~4個(gè)字節(jié)可用于大部分語言中的字符C++用wchar_t描述
GB2312(簡體中文)2個(gè)字節(jié)C++用2個(gè)char描述
Big5(繁體中文)2個(gè)字節(jié)C++用2個(gè)char描述
Shift-JIS(日文)2個(gè)字節(jié)C++用2個(gè)char描述邏輯類型邏輯類型用于描述“真”和“假”這樣的邏輯值,分別表示條件的滿足和不滿足。在C++中,邏輯類型用bool表示,它的值只有兩個(gè):true和false,分別對應(yīng)“真”和“假”。在大多數(shù)的C++實(shí)現(xiàn)中,bool類型的值一般占用一個(gè)字節(jié)的空間,true存儲(chǔ)的是1,false存儲(chǔ)的是0。(空間浪費(fèi)?)空值類型在C++中提供了一種值集為空的類型:空值型(void),用以表示:沒有返回值的函數(shù)的返回類型通用指針類型(void*)在C++中,常常把各種int型、各種char型以及bool型統(tǒng)稱為整型(integraltypes)把整型和實(shí)數(shù)類型統(tǒng)稱為算術(shù)型(arithmetictypes)整型(integraltypes)和
算術(shù)類型(arithmetictypes)sizeof可以通過“sizeof(類型名)”或“sizeof(變量名)”來計(jì)算各種數(shù)據(jù)類型的數(shù)據(jù)所占的內(nèi)存空間大?。ㄗ止?jié)數(shù))。標(biāo)準(zhǔn)庫的頭文件climits(或limits.h)定義了所有整型的取值范圍,標(biāo)準(zhǔn)庫的頭文件cfloat(或float.h)定義了所有實(shí)數(shù)類型的取值范圍。typedefC++允許在程序中給已有數(shù)據(jù)類型取一些別名,格式為:
typedef<已有類型><別名>;例如:typedefunsignedintUint;Uintx;
等價(jià)于:
unsignedintx;
typedef并沒有定義新類型。其作用是便于程序的閱讀和編寫,并使程序簡明、清晰和易于維護(hù)。數(shù)據(jù)在C++程序中的表示在程序中,數(shù)據(jù)以兩種形式出現(xiàn):常量:用于表示在程序執(zhí)行過程中不變(或不能被改變)的數(shù)據(jù)。變量:用于表示在程序執(zhí)行過程中可變的數(shù)據(jù)。例如,在計(jì)算圓的周長表達(dá)式2*PI*r中,2和圓周率PI是常量。半徑r是變量,它的值可能在程序運(yùn)行時(shí)從用戶處得到,或由程序的其它部分計(jì)算得到。常量在C++程序中,常量可以用兩種形式表示:字面常量:在程序中通過直接寫出常量值來使用的常量,通常又稱為直接量(literal)。符號(hào)常量(命名常量):通過常量定義給常量取一個(gè)名字并指定一個(gè)類型,在程序中通過常量名來使用這些常量。字面常量(直接量)C++的字面常量有:整數(shù)類型常量實(shí)數(shù)類型常量字符類型常量邏輯類型常量字符串常量整數(shù)類型字面常量在C++程序中,整數(shù)類型常量可以用下面形式來書寫:十進(jìn)制:由0~9數(shù)字組成,第一個(gè)數(shù)字不能是0(整數(shù)0除外),如:59,128,-72八進(jìn)制:由數(shù)字0打頭,0~7數(shù)字組成,如:073,0200,-0110十六進(jìn)制:由0x或0X打頭,0~9數(shù)字和A~F(或a~f)字母組成,如:0x3B,0x80,-0x48整數(shù)類型字面常量的默認(rèn)類型為int,可在整數(shù)類型常量的后面:加上l或L,表示longint類型的常量,如:32765L加上u或U,表示unsignedint類型的常量,如:4352U同時(shí)加上u(U)和l(L)表示unsignedlong類型的常量,如:41152UL,或,41152LU實(shí)數(shù)類型字面常量在C++程序中,實(shí)數(shù)類型常量采用十進(jìn)制形式書寫。實(shí)數(shù)類型常量有兩種表示法:小數(shù)表示法:由整數(shù)部分、小數(shù)點(diǎn)“.”和小數(shù)部分構(gòu)成,如:456.78,-0.0057,5.,.5科學(xué)表示法:在小數(shù)表示法或整數(shù)后加上一個(gè)指數(shù)部分,指數(shù)部分由E(或e)和一個(gè)整數(shù)類型數(shù)構(gòu)成,表示基數(shù)為10的指數(shù),如:4.5678E2,-5.7e-3等。實(shí)數(shù)類型字面常量默認(rèn)為double型,可以在實(shí)數(shù)類型常量后面:加上F(f)以表示float型,如:5.6F。加上L(l)表示longdouble型,如5.6L。字符類型字面常量在C++程序中,字符常量是由兩個(gè)單引號(hào)(')括起來的一個(gè)字符構(gòu)成,其中的字符寫法可以是:字符本身,如:'A'轉(zhuǎn)義序列,由\打頭的一串符號(hào)字符的編碼八進(jìn)制:'\ddd',如:'\101'十六進(jìn)制:'\xhh',如:'\x41'特殊表示,如:'\n'(換行符)、'\r'(回車符)、'\t'(橫向制表符)、'\b'(退格符)等注意下列字符的表示:反斜杠(\)應(yīng)寫成:'\\'單引號(hào)(')應(yīng)寫成:'\''雙引號(hào)(")可寫成:'\"'或'"'字符串類型字面常量在C++程序中,字符串常量是由兩個(gè)雙引號(hào)(")括起來的字符序列構(gòu)成,其中的字符的寫法與字符類型常量基本相同,即可以是字符本身和轉(zhuǎn)義序列。如:"Thisisastring.""I'mastudent.""Pleaseenter\"Y\"or\"N\":""Thisistwo-line\nmessage!"存儲(chǔ)字符串時(shí),往往要在最后一個(gè)字符的后面存儲(chǔ)一個(gè)字符'\0',表示字符串結(jié)束。字符串常量的類型為一維的常量字符數(shù)組(構(gòu)造數(shù)據(jù)類型)。符號(hào)常量符號(hào)常量是指先通過常量定義給常量取一個(gè)名字,并可指定一個(gè)類型;然后,在程序中通過常量名來使用這些常量。符號(hào)常量的定義格式為:
#define<常量名><值>或
const<類型名><常量名>=<值>;例如:
#definePI3.1415926或,
constdoublePI=3.1415926;符號(hào)常量的使用:2*PI*r使用符號(hào)常量的好處增加程序的易讀性constintPASS_SCORE=60;constintMINUTES_PER_HOUR=60;提高程序?qū)ΤA渴褂玫囊恢滦?.14、3.1416、3.1415926增強(qiáng)程序的易維護(hù)性constdoublePI=3.14;...2*PI*r......PI*r*r...
constdoublePI=3.1415;變量程序中可變的數(shù)據(jù)用變量來表示。例如:在計(jì)算圓周長的式子“2*PI*r”中,半徑r就是一個(gè)可變的數(shù)據(jù),它可能是通過用戶輸入得到,也可能由程序的其它部分計(jì)算得到。變量的基本特性名字用于區(qū)別不同的變量,用標(biāo)識(shí)符表示。類型指定變量能取何種值以及對其能進(jìn)行何種運(yùn)算(操作)。值在所屬類型的值集范圍內(nèi)可變。內(nèi)存空間和地址存儲(chǔ)變量值的內(nèi)存空間以及該空間的地址。變量的定義C++語言規(guī)定:程序中使用到的每個(gè)變量都要有定義(有的語言不需要)。變量定義格式為:
<類型名><變量名>;或者
<類型名><變量名>=<初值>;例如:inta=0;intb=a+1;doublex;或:inta=0,b=a+1;//同類型變量可以寫在一起,用‘,’分開doublex;變量值的輸入#include<iostream>//插入一些在標(biāo)準(zhǔn)庫中定義的輸入/輸出操作所需要的聲明usingnamespacestd;//C++標(biāo)準(zhǔn)庫中的程序?qū)嶓w是在名空間std中定義的。inti;doubled;......cin>>i;//從鍵盤輸入一個(gè)整數(shù)類型數(shù)給變量icin>>d;//從鍵盤輸入一個(gè)雙精度浮點(diǎn)數(shù)給變量d
上述的鍵盤輸入也可以寫在一條語句中:cin>>i>>d;
在輸入時(shí),一般用空白符(空格符、制表符或回車符)作為輸入數(shù)據(jù)之間的分隔符,每一個(gè)輸入數(shù)據(jù)的格式應(yīng)與相應(yīng)變量的類型相符。例如:輸入的數(shù)據(jù)為:12凵3.4↙
則i的值為:12,d的值為:3.4。輸入的數(shù)據(jù)為:12↙3.4↙
則i的值為:12,d的值為:3.4。輸入的數(shù)據(jù)為:12,3.4↙
則i的值為:12,d的值沒有意義。操作符(運(yùn)算符)操作符用于描述對數(shù)據(jù)的運(yùn)算。這里的數(shù)據(jù)稱為操作數(shù),它們可以是:常量變量函數(shù)調(diào)用的結(jié)果其它操作符的運(yùn)算結(jié)果例如,在下面的計(jì)算式子中,a+b-4(-a)*(b+c)a/f(10)x=a+、-(減法)、-(取負(fù))、*、/、f(函數(shù)調(diào)用)以及=(賦值)都是操作符而a、b、4、c、10、x以及(-a)、(b+c)、f(10)都是操作數(shù)C++操作符的種類
算術(shù)操作符關(guān)系與邏輯操作符位操作符賦值操作符其它操作符算術(shù)操作符算術(shù)操作符用于實(shí)現(xiàn)通常意義下的數(shù)值運(yùn)算。包括:取負(fù)“-”與取正“+”
,例如:-x
加“+”、減“-”、乘“*”、除“/”和取余數(shù)“%”
操作符“/”用于整型操作數(shù)時(shí)表示整除,小數(shù)點(diǎn)后面的數(shù)將舍去,并且一般不進(jìn)行四舍五入。例如:
3/2的結(jié)果為1;-10/3的結(jié)果為-3操作符“%”用于計(jì)算兩個(gè)整型數(shù)相除的余數(shù)。例如:
10%3的結(jié)果為1;8%2的結(jié)果為0“%”的操作數(shù)一般不為負(fù)數(shù)a%b按a-(a/b)*b計(jì)算算術(shù)操作符(續(xù))自減“--”和自增“++”
單目操作符,把操作數(shù)減(或加)1可以前置,也可以后置:++x和x++前置與后置的區(qū)別是:intx=1,y;y=(++x)//x的值是2,y的值為2(先加后用)y=(x++)//x的值是2,y的值為1(先用后加)操作數(shù)類型一般為算術(shù)類型,有時(shí)也可以是枚舉類型和指針類型。結(jié)果類型一般與操作數(shù)類型相同。算術(shù)操作可能會(huì)產(chǎn)生“溢出”等問題。關(guān)系操作符程序中經(jīng)常要根據(jù)某個(gè)條件來決定其后續(xù)的動(dòng)作,這里的條件往往體現(xiàn)為對數(shù)據(jù)進(jìn)行比較。關(guān)系操作符用于對數(shù)據(jù)進(jìn)行大小比較,有:>(大于),<(小于),>=(不小于),<=(不大于),==(相等),!=(不等)操作數(shù)為算術(shù)類型和枚舉類型,關(guān)系操作的結(jié)果為bool類型的值:true或false。例如:
3>2的結(jié)果為true 4.3<1.2的結(jié)果為false 'A'<'B'的結(jié)果為true false<true的結(jié)果為true邏輯操作符邏輯操作符實(shí)現(xiàn)邏輯運(yùn)算,用于復(fù)雜條件的表示。包括:!(邏輯非)&&(邏輯與)||(邏輯或)操作數(shù)為bool類型,例如:!(a>b)(age<10)&&(weight>30)(ch<'0')||(ch>'9')
結(jié)果為bool類型!true->false!false->truefalse||false->falsefalse||true->truetrue||false->truetrue||true->truefalse&&false->falsefalse&&true->falsetrue&&false->falsetrue&&true->true位操作在C++中提供了對整型和枚舉類型數(shù)據(jù)按操作數(shù)的各個(gè)二進(jìn)制位分別進(jìn)行運(yùn)算的操作,包括:邏輯位操作和移位操作。
邏輯位操作~(按位取反),&(按位與),|(按位或),^(按位異或)~0→1~1→00|0→00|1→11|0→11|1→10^0→00^1→11^0→11^1→00&0→00&1→01&0→01&1→1例:
s&0x10//判s的第5位(從低位數(shù))是0還是1(0x10:00010000)s=(s|0x40)//把第7位設(shè)置為1(0x40:01000000s=(s&0xF7)//表示把第4位設(shè)置為0(0xF7:11110111)位操作(續(xù))移位操作
<<(左移),>>(右移) 左移:把第一個(gè)操作數(shù)按二進(jìn)制位依次左移由第二個(gè)操作數(shù)所指定的位數(shù)。左移時(shí),高位舍棄,低位補(bǔ)0。
右移:把第一個(gè)操作數(shù)按二進(jìn)制位依次右移由第二個(gè)操作數(shù)所指定的位數(shù)。右移時(shí),低位舍棄,高位按下面規(guī)則處理:對于無符號(hào)數(shù)或有符號(hào)的非負(fù)數(shù),高位補(bǔ)0對于有符號(hào)數(shù)的負(fù)數(shù),高位與原來的最高位相同(適合于補(bǔ)碼表示的整數(shù))移位操作常常用于實(shí)現(xiàn)特殊的乘法和除法運(yùn)算。例如,在某些情況下,把一個(gè)整型數(shù)按二進(jìn)位左移一位相當(dāng)于把該整型數(shù)乘以2,把一個(gè)整型數(shù)按二進(jìn)位右移一位相當(dāng)于把該整型數(shù)除以2,賦值操作除了通過輸入操作來改變變量的值以外,通常,變量值的改變是通過賦值操作來實(shí)現(xiàn)。例如:a=x+y*z簡單賦值操作符a=b復(fù)合賦值操作符+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=a#=b功能上等價(jià)于:a=a#(b)有時(shí)能提高效率第一個(gè)操作數(shù)通常為變量。賦值操作構(gòu)成了馮?諾依曼計(jì)算模型的一個(gè)重要特征(狀態(tài)轉(zhuǎn)換),同時(shí),也構(gòu)成了馮?諾依曼計(jì)算的一個(gè)瓶頸。其它操作符
條件操作符(?:)d1?d2:d3如果d1的值為
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)展?fàn)I銷測試題及答案
- 信息系統(tǒng)項(xiàng)目管理師考試快速適應(yīng)試題及答案
- 臨床藥物監(jiān)測的重要性試題及答案
- 衛(wèi)生領(lǐng)導(dǎo)力與管理能力提升試題及答案
- 系統(tǒng)架構(gòu)設(shè)計(jì)師考試知識(shí)回顧試題及答案
- 影視碩士面試題及答案
- 系統(tǒng)規(guī)劃和管理復(fù)習(xí)策略試題及答案
- 2025年計(jì)算機(jī)二級(jí)考試學(xué)習(xí)重點(diǎn)內(nèi)容的整合與研究試題及答案
- 制定科學(xué)復(fù)習(xí)計(jì)劃臨床執(zhí)業(yè)醫(yī)師試題及答案
- 戰(zhàn)勝疫情測試題及答案
- 2024年杭州市高三二模英語試卷及答案
- 計(jì)算機(jī)基礎(chǔ)知識(shí)題庫1000道含完整答案(歷年真題)
- 介入手術(shù)需要的設(shè)備
- 兩位數(shù)除以一位數(shù)(有余數(shù))計(jì)算題200道
- 產(chǎn)后早開奶好處健康宣教
- 2024屆江蘇省期無錫市天一實(shí)驗(yàn)校中考聯(lián)考英語試題含答案
- 北師大版數(shù)學(xué)三年級(jí)下冊《長方形的面積》
- 八年級(jí)黃金矩形(公開課)
- 住院醫(yī)師規(guī)范化培訓(xùn)臨床小講課指南(2021年版)全文解讀
- 巖石錨噴支護(hù)設(shè)計(jì)計(jì)算書
- 醫(yī)院手衛(wèi)生依從性觀察表
評論
0/150
提交評論