新 第2章 數(shù)據(jù)類型與表達(dá)式_第1頁(yè)
新 第2章 數(shù)據(jù)類型與表達(dá)式_第2頁(yè)
新 第2章 數(shù)據(jù)類型與表達(dá)式_第3頁(yè)
新 第2章 數(shù)據(jù)類型與表達(dá)式_第4頁(yè)
新 第2章 數(shù)據(jù)類型與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)處理的對(duì)象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在的。2.1C++的數(shù)據(jù)類型姓名:曼迪年齡:10歲身高:123.4CM文本整數(shù)帶有小數(shù)3直徑:24.6CM直徑:12742.02KM不同的數(shù)據(jù)采用不同類型的存儲(chǔ)方式::一個(gè)二進(jìn)制位(bit)存儲(chǔ)陣列數(shù)據(jù)的存儲(chǔ)方式::8位一個(gè)字節(jié)(byte)存儲(chǔ)陣列數(shù)據(jù)的存儲(chǔ)方式::16位一個(gè)字(word)存儲(chǔ)陣列數(shù)據(jù)的存儲(chǔ)方式::32位一個(gè)字(word)存儲(chǔ)陣列數(shù)據(jù)的存儲(chǔ)方式C++中使用的數(shù)據(jù)類型基本類型整型、字符型、浮點(diǎn)型(實(shí)型)、布爾型、空類型構(gòu)造類型枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、類類型指針類型數(shù)據(jù)類型是所有程序的基礎(chǔ)數(shù)據(jù)類型可以告訴我們:

計(jì)算機(jī)為數(shù)據(jù)提供了多大的存儲(chǔ)空間

數(shù)據(jù)代表什么意思

可以對(duì)數(shù)據(jù)執(zhí)行哪些操作一、整型類型類型標(biāo)識(shí)符字節(jié)數(shù)值范圍備注短整型short[int]2-32768~32767-215~215-1無(wú)符號(hào)短整型unsignedshort[int]20~655350~216-1整型[signed]int4-2147483648~2147483647-231~231-1無(wú)符號(hào)整型unsigned[int]40~42949672950~232-1長(zhǎng)整型long[int]4-2147483648~2147483647-231~231-1無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]40~42949672950~232-1inta=23;shortintb=45;131、整型數(shù)據(jù)的表示方法十進(jìn)制(Decimal)八進(jìn)制(Octal)十六進(jìn)制(Hexadecimal)inta=21;inta=021;inta=0x21;輸出:21輸出:17輸出:33整型數(shù)據(jù)按二進(jìn)制數(shù)形式存儲(chǔ)在內(nèi)存中的存儲(chǔ)形式(2個(gè)字節(jié))1、整型數(shù)據(jù)的存儲(chǔ)方式十進(jìn)制50110010二進(jìn)制0000000000110010高地址字節(jié)低地址字節(jié)152、有符號(hào)數(shù)與無(wú)符號(hào)數(shù)無(wú)符號(hào)數(shù)沒(méi)有符號(hào)位,只能表示非負(fù)數(shù)無(wú)符號(hào)數(shù)類型必須指定為unsigned16有符號(hào)數(shù)二進(jìn)制補(bǔ)碼表示,首位為符號(hào)位指定signed或缺省情況,即為有符號(hào)數(shù)(1)補(bǔ)碼的概念

正數(shù):與原碼一致,首位為0

負(fù)數(shù):絕對(duì)值取反加1,首位為1

零:各位全為0(2)補(bǔ)碼舉例0000000000110010111111111100110150的原碼-50的補(bǔ)碼取反加1

1111111111001110shortinti=-50;//占2字節(jié)若把負(fù)數(shù)賦值給無(wú)符號(hào)數(shù),會(huì)出現(xiàn)什么情況?(3)有符號(hào)數(shù)與無(wú)符號(hào)數(shù)舉例intmain(){shortintx=-50;unsignedshortinty;y=x;cout<<“x="<<x<<endl;cout<<“y="<<y<<endl;}1111111111001110-50的補(bǔ)碼xy=x;y65486的原碼1111111111001110若把負(fù)數(shù)賦值給無(wú)符號(hào)數(shù),則把該負(fù)數(shù)的補(bǔ)碼當(dāng)作無(wú)符號(hào)數(shù)進(jìn)行處理。3、整型數(shù)據(jù)的溢出(Overflow)

數(shù)據(jù)超出了變量能夠存儲(chǔ)的范圍,造成數(shù)據(jù)丟失或數(shù)值改變等。intmain(){shortinta=32767;a=a+1;cout<<"a="<<a<<endl;}0111111111111111+132767的原碼1000000000000000整數(shù)的環(huán)繞特性

一個(gè)正數(shù)大到了極點(diǎn)就會(huì)變成負(fù)數(shù);一個(gè)負(fù)數(shù)小到了極點(diǎn)就會(huì)變成正數(shù)。-32768的補(bǔ)碼1、浮點(diǎn)型的表示方法2.2浮點(diǎn)型31.4159a=0.314159e2a=3.14159e1a=31.4159e0a=314.159e-1規(guī)范化指數(shù)形式以10為底floata=31.4159;floata=3.14159e1;

在程序中不論把浮點(diǎn)數(shù)寫成小數(shù)形式還是指數(shù)形式,在內(nèi)存中都是以指數(shù)形式(即浮點(diǎn)形式)存儲(chǔ)的。類型類型標(biāo)識(shí)符字節(jié)絕對(duì)值范圍單精度型float43.4×10-38~3.4×1038雙精度型double81.7×10-308~1.7×10308長(zhǎng)雙精度型longdouble81.7×10-308~1.7×103086位有效數(shù)字15位有效數(shù)字27313029282726252423222120191817161514131211109876543210

指數(shù)位尾數(shù)位符號(hào)位1、浮點(diǎn)數(shù)的存儲(chǔ)方式ABCD內(nèi)存中逆序存儲(chǔ):DCBA浮點(diǎn)數(shù)123456.0f的轉(zhuǎn)換過(guò)程123456.011110001001000000.01.11100010010000000轉(zhuǎn)化為二進(jìn)制小數(shù)點(diǎn)左移16位1.11100010010000000*(2^16)刪除最高位的111100010010000000后面用0補(bǔ)夠23位11100010010000000000000指數(shù)位共8位,可以表示范圍是0~255的無(wú)符號(hào)整數(shù),也可以表示-128~127的有符號(hào)整數(shù)。但因?yàn)橹笖?shù)是可以為負(fù)的,所以為了統(tǒng)一把十進(jìn)制的整數(shù)化為二進(jìn)制時(shí),都先加上127。16+127=143二進(jìn)制表示為:10001111符號(hào)位(整數(shù)):0010001111111000100100000000000003130292827262524232221201918171615141312111098765432100100011

1

1

1

1

1

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

指數(shù)位尾數(shù)位符號(hào)位01000111111100010010000000000000轉(zhuǎn)化為16進(jìn)制:47F12000高低位顛倒:0020F147內(nèi)存中應(yīng)顯示:00315447練習(xí)54321.02、浮點(diǎn)型數(shù)據(jù)的舍入誤差由于浮點(diǎn)型變量能夠表示的有效數(shù)字有限,將有效位以外的數(shù)字舍去造成誤差。intmain(){floata=123.456741e5;cout<<a<<endl;return0;}浮點(diǎn)數(shù)123.456f的轉(zhuǎn)換過(guò)程整數(shù)部轉(zhuǎn)化為二進(jìn)制11110110.456轉(zhuǎn)化為二進(jìn)制十進(jìn)制小數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)方法

乘以2直到?jīng)]有了小數(shù)為止(取整數(shù)部分為二進(jìn)制位)。0.456*2=0.9120.912*2=1.8240.824*2=1.6480.648*2=1.2960.296*2=0.5920.592*2=1.1840.184*2=0.3680.368*2=0.7360.736*2=1.4720.472*2=0.944…取整數(shù)部分0111010010…即使超過(guò)尾數(shù)的最大長(zhǎng)度23位也仍有小數(shù)!這就是著名的浮點(diǎn)數(shù)精度問(wèn)題。1111011.01110100101111001加上前面的整數(shù)部算夠24位即可小數(shù)點(diǎn)左移6位1.111011011101001011110011.11101101110100101111001*(2^6)刪除最高位的111101101110100101111001010000101111011011101001011110016+127=133二進(jìn)制表示為:10000101

符號(hào)位(整數(shù)):0轉(zhuǎn)化為16進(jìn)制:42F6E979高低位顛倒:79E9F642四、字符型charch='A';

只能包括一個(gè)字符單引號(hào)(′)是定界符占一個(gè)字節(jié)1、字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式存放該字符相應(yīng)的ASCII代碼01000001'A'字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用40intmain(){ inti,j; charc1; i='A'+5; j='B'; c1=65+5; cout<<"i="<<i<<''<<"j="<<j<<'\n'; cout<<"c1="<<c1<<endl; return0;}注意:字符型數(shù)據(jù)只能存放0~255范圍內(nèi)的整數(shù)。41將小寫字母轉(zhuǎn)換為大寫字母。intmain(){ charc1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; cout<<c1<<''<<c2<<endl; return0;}

有些ASCII的字符代表某些操作,不能打印出來(lái),如回車、換行等,可用兩種方式表示這些字符。

1)用ASCII碼的形式

charre=13;

2)用轉(zhuǎn)義字符

charre=

′\n′;2、轉(zhuǎn)義字符43轉(zhuǎn)義字符

意義ASCII碼值(十進(jìn)制)\a響鈴(BEL)007\b退格(BS)008\f換頁(yè)(FF)012\n換行(LF)010\r回車(CR)013\t水平制表(HT)009\v垂直制表(VT)011\\反斜杠092\?問(wèn)號(hào)字符063\'單引號(hào)字符039\"雙引號(hào)字符034\0空字符(NULL)000\ddd1到3位8進(jìn)制數(shù)所代表的字符\xhh1到2位16進(jìn)制數(shù)所代表的字符可以利用以下代碼顯示擴(kuò)展ASCII碼:system("chcp437");利用以下代碼轉(zhuǎn)回中文顯示:system("chcp936");45

編譯系統(tǒng)在見(jiàn)到字符“\”時(shí),會(huì)接著找它后面的字符,把它處理成一個(gè)字符,在內(nèi)存中只占一個(gè)字節(jié)。

intmain(){ inta=1; cout<<a<<""<<a<<endl; cout<<a<<"\t"<<a<<endl; return0;}intmain(){ cout<<"c:\tc\tc"<<endl; return0;}intmain(){ cout<<"c:\\tc\\tc"<<endl; return0;}五、變量的定義在程序運(yùn)行期間其值可以改變的量稱為變量。inta;floatb;doublec;chard;變量類型變量名變量有一個(gè)名字,即標(biāo)識(shí)符變量在內(nèi)存中占據(jù)一定的存儲(chǔ)單元變量占據(jù)存儲(chǔ)空間的大小由其類型決定程序使用變量名表示這個(gè)變量所占據(jù)的存儲(chǔ)單元里存儲(chǔ)的數(shù)據(jù)的值變量要“先定義,后使用”481、變量的命名規(guī)則

只能由字母、數(shù)字、下劃線(‘_’)組成;第一個(gè)字符必須為字母或下劃線;

C++語(yǔ)言標(biāo)識(shí)符是大小寫敏感的;不要與關(guān)鍵字、系統(tǒng)函數(shù)名和類名重復(fù)。合法的變量名:

sum,average,total,day,month,Student_name,tan,BASIC,li_ling不合法的標(biāo)識(shí)符和變量名:

M.D.John,$123,#33,3G64,Lingli,C++,Zhang-ling,U.S.A.50asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatoroverloadprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchthistemplatethrowtrytypedefunionunsignedvirtualvoidvolatilewhileC++常用的關(guān)鍵字:

標(biāo)識(shí)符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進(jìn)行“解碼”。標(biāo)識(shí)符最好采用英文單詞或其組合,便于記憶和閱讀。切忌使用漢語(yǔ)拼音來(lái)命名。程序中的英文單詞用詞應(yīng)當(dāng)準(zhǔn)確。

例如:不要把CurrentValue寫成NowValue。

單字符的名字也是有用的,常見(jiàn)的如i,j,k,m,n,x,y,z等,它們通??捎米骱瘮?shù)內(nèi)的局部變量。

標(biāo)識(shí)符的長(zhǎng)度應(yīng)當(dāng)符合“min-length&&max-information”原則。maxvalmaxValueUntilOverflow

例如Windows應(yīng)用程序的標(biāo)識(shí)符通常采用“大小寫”混排的方式,如AddChild。而Unix應(yīng)用程序的標(biāo)識(shí)符通常采用“小寫加下劃線”的方式,如add_child。別把這兩類風(fēng)格混在一起用。

命名規(guī)則盡量與所采用的操作系統(tǒng)或開(kāi)發(fā)工具的風(fēng)格保持一致。例如:intx,X; //變量x與X容易混淆voidfoo(intx); //函數(shù)foo與FOO容易混淆voidFOO(floatx);

程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標(biāo)識(shí)符。例如:floatvalue;floatoldValue;floatnewValue;

變量的名字應(yīng)當(dāng)使用“名詞”或者“形容詞+名詞”。如Value1,Value2等,除非邏輯上的確需要編號(hào)。

用正確的反義詞組命名具有互斥意義的變量或相反動(dòng)作的函數(shù)等。例如:int minValue;int maxValue;int SetValue(…);int GetValue(…);

盡量避免名字中出現(xiàn)數(shù)字編號(hào)。2、為變量賦初值可以在定義變量時(shí)指定它的初值。floata=3.14;floatb=3.14*2.3*2.3;也可以是表達(dá)式floata;a=3.14;常規(guī)方式變量未賦初值即使用,會(huì)有什么后果?intmain(){inta;cout<<"a="<<a<<endl;return0;}各次運(yùn)行情況可能不同原因是什么?59若變量未賦初值即使用,則該變量的初值是一個(gè)不可預(yù)測(cè)的值。3、訪問(wèn)變量

內(nèi)存單元由操作系統(tǒng)按字節(jié)編號(hào),稱為地址。對(duì)象在內(nèi)存中第一個(gè)字節(jié)的地址稱為對(duì)象的地址。0X0066FDF40X0066FDEC變量a的地址變量b的地址inta;doubleb;由類型符double解釋存儲(chǔ)數(shù)據(jù)由類型符int解釋存儲(chǔ)數(shù)據(jù)取對(duì)象b的地址: &b取址運(yùn)算符六、符號(hào)常量和常變量符號(hào)常量是以標(biāo)識(shí)符形式出現(xiàn)的常量。#include<iostream>usingnamespacestd;#definePRICE30intmain(){ intnum,total; num=10; total=num*PRICE; cout<<"total="<<total<<endl; return0;}不加分號(hào)constinta=3;常變量表示程序運(yùn)行期間值不能改變的變量。常變量不能被賦值。constinta;a=3;定義常變量時(shí)必須同時(shí)對(duì)它初始化。又稱只讀變量65符號(hào)常量和常變量的區(qū)別

符號(hào)常量用一個(gè)符號(hào)代替一個(gè)字符串,在預(yù)編譯時(shí)把所有符號(hào)常量替換為所指定的字符串,它沒(méi)有類型,在內(nèi)存中并不存在以符號(hào)常量命名的存儲(chǔ)單元。常變量具有變量的特征,它具有類型,在內(nèi)存中存在著以它命名的存儲(chǔ)單元。與一般變量惟一的不同是指定變量的值不能改變。

為什么要使用常量?不使用常量所引起的麻煩:(1)程序的可讀性(可理解性)變差。程序員自己會(huì)忘記那些數(shù)字或字符串是什么意思,用戶則更加不知它們從何處來(lái)、表示什么。(2)在程序的很多地方輸入同樣的數(shù)字或字符串,難保不發(fā)生書(shū)寫錯(cuò)誤。(3)如果要修改數(shù)字或字符串,則會(huì)在很多地方改動(dòng),既麻煩又容易出錯(cuò)。67盡量使用含義直觀的常量來(lái)表示程序中多次出現(xiàn)的數(shù)字或字符串。七、C++的運(yùn)算符算術(shù)運(yùn)算符+-*/%++--關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符!&&||位運(yùn)算符<<>>~|^&

賦值運(yùn)算符=及擴(kuò)展的復(fù)合運(yùn)算符條件運(yùn)算符?:逗號(hào)運(yùn)算符,指針運(yùn)算符*&求字節(jié)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換符(type)分量運(yùn)算符.->下標(biāo)運(yùn)算符[]其他()newdelete691、基本的算術(shù)運(yùn)算符運(yùn)算符名稱舉例說(shuō)明+正值運(yùn)算符(正號(hào))+b值不變-負(fù)值運(yùn)算符(負(fù)號(hào))-d取相反數(shù)+加法運(yùn)算符a+3加法-減法運(yùn)算符c-4減法*乘法運(yùn)算符a*3乘法/除法運(yùn)算符c/d除法%模運(yùn)算符e%4求余數(shù)、取模702、

算術(shù)表達(dá)式

用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來(lái)的、符合C++語(yǔ)法規(guī)則的式子,稱C++算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。a*b/c-1.5+'a'71C++語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。圓括號(hào)()具有最高的優(yōu)先級(jí)72直接舍去商的小數(shù)部分采取“向零取整”兩個(gè)整數(shù)相除,結(jié)果也為整數(shù)注意%運(yùn)算符的兩個(gè)操作數(shù)都必須是整數(shù)模運(yùn)算有什么作用?分解數(shù)字733

溫馨提示

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

評(píng)論

0/150

提交評(píng)論