版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、基本語(yǔ)言元素
二、基本數(shù)據(jù)類型
三、算術(shù)負(fù)運(yùn)算與補(bǔ)碼轉(zhuǎn)換第二章基本元素、類型和概念1一、基本語(yǔ)言元素
1.C/C++中的字符集
每一種語(yǔ)言有各自的基本元素。C/C++語(yǔ)言的詞法分析建立在對(duì)基本元素的掃描、上下文匹配和排列組合之上?;绢愋褪荂++作為強(qiáng)類型語(yǔ)言處理各種數(shù)據(jù)的基本尺度。通過基本元素和類型完成文字符號(hào)的轉(zhuǎn)換以及源頭處的求值計(jì)算。關(guān)于基本元素的約定就形成詞法規(guī)定,由此形成定義、聲明、表達(dá)式、語(yǔ)句和函數(shù)進(jìn)而建立完整的程序。2C/C++中的字符集由下列字符構(gòu)成:
a.
26個(gè)大小寫英文字母:a~z,A~Z
b.
10個(gè)數(shù)字字符:0~9
c.
標(biāo)點(diǎn)符號(hào):空格~!#%^&*()_-+={}[]:;'",<>./?\|C/C++中的標(biāo)點(diǎn)符號(hào)對(duì)編譯器而言具有詞法意義,某些標(biāo)點(diǎn)符號(hào)為C/C++的運(yùn)算符或?qū)︻A(yù)處理器有重要意義。標(biāo)點(diǎn)符號(hào)[]、()和{}必須成對(duì)出現(xiàn)。C/C++中的字符集一共91個(gè)字符,實(shí)際上包含可鍵入的字母,只有三個(gè)例外它們是:@、$、`。32.語(yǔ)言符號(hào)語(yǔ)言符號(hào)是C/C++語(yǔ)言有意義的最小單元.
a.空白字符:空格、水平制表、換行、回車、換頁(yè)、縱向制表和換行符都稱為空白字符
b.標(biāo)識(shí)符:所有的名稱在索引點(diǎn)前必須先有效的說(shuō)明
c.關(guān)鍵字:關(guān)鍵字是系統(tǒng)預(yù)定義的保留標(biāo)識(shí)符
d.標(biāo)點(diǎn)符號(hào)和分隔符;
e.文字常數(shù);
f.運(yùn)算符;
4(1)空白字符空格、水平制表、換行、回車、換頁(yè)、縱向制表(verticaltab)和換行(newline)符都稱為空白字符(white-space),它們具有相同的功能即作為打印頁(yè)上單詞和行之間的空白。通過空白字符和其它語(yǔ)言符號(hào),例如運(yùn)算符和標(biāo)點(diǎn),從而對(duì)語(yǔ)言符號(hào)進(jìn)行定界。對(duì)代碼進(jìn)行詞法分析時(shí),編譯器忽略空白字符,除非它們作為分隔符或字符串的組成成分。5
(2)標(biāo)識(shí)符所有的名稱在索引點(diǎn)前必須先有效的說(shuō)明,否則是無(wú)效的標(biāo)識(shí)符。標(biāo)識(shí)符是程序員引入的有效的名稱,是編譯器許可的名稱。對(duì)象名、變量名或函數(shù)名,結(jié)構(gòu)名、類類型名、枚舉名、聯(lián)合名或成員名,typedef名稱、標(biāo)號(hào)名、宏名、宏形參名、形參名等遵循標(biāo)識(shí)符的命名規(guī)定。6標(biāo)識(shí)符或名稱的命名規(guī)定如下:
a.標(biāo)識(shí)符的字符序列僅由下劃線“_”、數(shù)字0~9與26個(gè)大小寫字母a~z,A~Z構(gòu)成。
b.標(biāo)識(shí)符的首字符必須是大寫字母或小寫字母或一個(gè)下劃線“_”而不能是數(shù)字開頭。
c.標(biāo)識(shí)符不能與關(guān)鍵字使用一樣的拼寫和大小寫方式。
d.標(biāo)識(shí)符對(duì)大小寫字母敏感,即大寫字母或小寫字母代表不同的名稱。
例如:和是不同的名稱。標(biāo)識(shí)符中含有關(guān)鍵字是合法的,例如pint是一個(gè)合法的標(biāo)識(shí)符,盡管它包含了關(guān)鍵字int。而1ab,&x,#ddd,9y不是有效的標(biāo)識(shí)符。7(3)關(guān)鍵字關(guān)鍵字是系統(tǒng)預(yù)定義的保留標(biāo)識(shí)符。它們不能再定義用作程序中的標(biāo)識(shí)符。關(guān)鍵字是語(yǔ)言標(biāo)準(zhǔn)的制定者提供給用戶使用的舉足輕重的語(yǔ)言單詞。ANSIC89規(guī)定32個(gè)保留字,C++在此基礎(chǔ)上增添了以斜體表示的28個(gè)關(guān)鍵字。8以下是這些關(guān)鍵字和其主要作用的非嚴(yán)格歸類:
1.基本類型charintfloatdoublelongshortsignedunsignedbool
2.自引入類型classenumstructunion
3.內(nèi)存大小和類名聲明sizeoftypedef
4.存儲(chǔ)屬性autoregisterstaticextern
5.數(shù)據(jù)凍結(jié)和變動(dòng)constvolatilemutable
6.邏輯真假falsetrue
7.運(yùn)算符和內(nèi)存操作operatornewdeletethis9
8.流程語(yǔ)句的控制trythrowcatchifelsedowhileforcontinueswitchcasedefaultbreakgotoreturn
9.成員訪問控制privateprotectedpublicfriend
10.函數(shù)修飾詞voidinlinevirtualexplicit
11.模板和名稱空間templatetypenamenamespaceusing
12.類型轉(zhuǎn)換運(yùn)算const_castdynamic_castreinterpret_caststatic_casttypeid10(4)分隔符分隔符是用來(lái)分隔單詞或程序正文的,它用來(lái)表示某個(gè)程序段的結(jié)束和另一個(gè)程序段的開始,或者增加程序的可讀性。常用的分隔符如下所述:a.圓括號(hào)()圓括號(hào)用于增加程序的可讀性以及提高表達(dá)式運(yùn)算的優(yōu)先級(jí)。
b.空格符常用來(lái)作為名稱和名稱或運(yùn)算符之間的分隔符。
c.逗號(hào),逗號(hào)用來(lái)作為定義多個(gè)變量之間的分隔符;或者用來(lái)作為函數(shù)的多個(gè)參數(shù)之間的分隔符。逗號(hào)還可以用作運(yùn)算符。11
d.分號(hào);用于循環(huán)語(yǔ)句中for關(guān)鍵字后面括號(hào)中三個(gè)表達(dá)式的分隔,用于終止分號(hào)前的語(yǔ)句。花括號(hào){}后的分號(hào)表示一個(gè)聲明的結(jié)束。
e.冒號(hào):用來(lái)作語(yǔ)句標(biāo)號(hào)與語(yǔ)句之間的分隔符和switch語(yǔ)句中關(guān)鍵字case與語(yǔ)句序列之間的分隔符。用于表示繼承的上下關(guān)系、構(gòu)造函數(shù)的冒號(hào)語(yǔ)法和訪問作用界定。
f.花括號(hào){}用來(lái)構(gòu)造程序,形成程序塊的層次體系。
g.省略號(hào)...,三個(gè)圓點(diǎn)構(gòu)成的省略號(hào)用來(lái)聲明函數(shù)的可變參數(shù)。12(5)文字常數(shù)文字常數(shù)是在程序中直接使用字符序列表示的數(shù)據(jù),文字常數(shù)亦簡(jiǎn)稱為常數(shù)或文字。文字常數(shù)有整型常數(shù)、浮點(diǎn)常數(shù)、字符常數(shù)、字符串常數(shù)。13二、基本數(shù)據(jù)類型
數(shù)據(jù)狀態(tài)的數(shù)學(xué)描述形成數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)的操作是對(duì)數(shù)據(jù)的狀態(tài)進(jìn)行改變,通過特定的操作步驟數(shù)據(jù)從一種狀態(tài)變成另一種狀態(tài),這些操作步驟就形成一套算法,因此程序是由數(shù)據(jù)結(jié)構(gòu)與建立其上的相應(yīng)算法構(gòu)成的。不同的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)不同的算法,這是所有計(jì)算機(jī)語(yǔ)言共有的特征。本課件用type或T,T1,T2,Tn等代表類型名。type或T1,T2可以是char,short,int,long等整型和float,double,longdouble浮點(diǎn)型或結(jié)構(gòu)名,聯(lián)合名,枚舉名和類類型名等,它們可先通過struct,class,enum,union或Typedef等聲明。14數(shù)據(jù)類型基本數(shù)據(jù)類型指針類型type*(含void*)引用類型type&(無(wú)void數(shù)據(jù)更無(wú)void&數(shù)據(jù))枚舉類型enum(枚舉常數(shù)為有限個(gè)int型常數(shù))集合數(shù)據(jù)類型數(shù)組類型array[]結(jié)構(gòu)類型struct聯(lián)合類型union類類型class整型intshortlong字符型char(屬于1字節(jié)的整型)單精度浮點(diǎn)型float實(shí)型雙精度浮點(diǎn)型double長(zhǎng)雙精度浮點(diǎn)型longdouble布爾邏輯型bool15類型名type說(shuō)明長(zhǎng)度數(shù)據(jù)范圍bool布爾邏輯型1true(1)false(0)char字符型l-128~127(0~255)unsignedchar無(wú)符號(hào)字符型10~255signedchar有符號(hào)字符型1-128~127[signed]short[int]有符號(hào)短整型2-32768~32767unsignedshort[int]無(wú)符號(hào)短整型2-32768~32767[signed]int有符號(hào)整型2/4-32768~32767unsigned[int]無(wú)符號(hào)整型2/40~65535[signed]long[int]有符號(hào)長(zhǎng)整型4-2147483648~2147483647unsignedlong[int]無(wú)符號(hào)長(zhǎng)型型40~4294967295float浮點(diǎn)型43.4*10e-38~~3.4*10e38double雙精度型81.7*10e-308~~1.7*10e308longdouble長(zhǎng)雙精度型8/10至少與double類型同16描述數(shù)據(jù)的狀態(tài)首先要獲得數(shù)據(jù)的類型,通過引入變量的概念來(lái)確定數(shù)據(jù)的狀態(tài)。變量是存儲(chǔ)信息的單元,它對(duì)應(yīng)于某個(gè)內(nèi)存空間。變量名代表其存儲(chǔ)空間,程序能在變量中存儲(chǔ)值和取出值。在定義變量時(shí),說(shuō)明的變量名稱和數(shù)據(jù)類型(如int)告訴編譯器要為變量分配多少內(nèi)存空間,以及變量中要存儲(chǔ)什么類型的值。內(nèi)存單元的單位是字節(jié)。
C++是一門強(qiáng)數(shù)據(jù)類型的語(yǔ)言,每一種數(shù)據(jù)一般都嚴(yán)格地對(duì)應(yīng)確定的數(shù)據(jù)類型。C/C++的數(shù)據(jù)類型有基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型之分。基本數(shù)據(jù)類型是C/C++內(nèi)部預(yù)先定義的數(shù)據(jù)類型,非基本數(shù)據(jù)類型包括指針、數(shù)組和結(jié)構(gòu)以及類類型等,非基本數(shù)據(jù)類型也稱用戶引入的數(shù)據(jù)類型。17基本數(shù)據(jù)類型有:char(字符型)、int(整型)、float(單精度浮點(diǎn)型)和double(雙精度浮點(diǎn)型)。在ANSIC++中,還有bool(布爾型).bool類型的變量其結(jié)果值用真true假false表示,true就是1,false就是0。關(guān)鍵字char、int、float、double和bool等為基本數(shù)據(jù)類型的類名。類名不占內(nèi)存空間。關(guān)鍵字void具有特殊的含義,因?yàn)闆]有void型的數(shù)據(jù),只有void*型的指針。除上述基本數(shù)據(jù)類型外,還有一些類型修飾符,它用來(lái)改變基本類型的意義。修飾符有1ong(長(zhǎng)型符)、short(短型符)、signed(有符號(hào))和unsigned(無(wú)符號(hào))。18short只修飾int,shortint可省略為short,long修飾int和double,1ongint可省略為1ong,一般表示4個(gè)字節(jié),修飾longdouble時(shí),一般表示8或10個(gè)字節(jié)。unsined和signed能修飾char,short,int和long。數(shù)據(jù)類型確定了數(shù)據(jù)所占內(nèi)存空間大小,也確定了數(shù)據(jù)的范圍。數(shù)據(jù)類型的數(shù)域范圍記錄在頭文件limits.h和float.H中。int類型必然不小于short類型,不大于long類型,在16位系統(tǒng)里是2個(gè)字節(jié)長(zhǎng),32位系統(tǒng)里為4個(gè)字節(jié)長(zhǎng)。整數(shù)類型包括char,short,long,signed,unsigned等。枚舉常數(shù)和當(dāng)作右值使用的枚舉變量可視為int類型看待。19float類型是4字節(jié)的浮點(diǎn)數(shù)。double是8字節(jié)的浮點(diǎn)數(shù),也是32位浮點(diǎn)數(shù)學(xué)協(xié)處理器進(jìn)行表達(dá)式運(yùn)算的標(biāo)準(zhǔn)類型,double類型是浮點(diǎn)數(shù)的缺省類型,float類型的數(shù)據(jù)一般會(huì)轉(zhuǎn)換到double類型的數(shù)據(jù)進(jìn)行運(yùn)算。浮點(diǎn)類型包括float,double和longdouble類型。longdoulbe類型表示浮點(diǎn)處理器的幕后精度和數(shù)據(jù)范圍的擴(kuò)充優(yōu)化處理,當(dāng)程序員感到64位double內(nèi)存不足以處理符點(diǎn)數(shù)的運(yùn)算時(shí),就設(shè)置longdouble變量。以便編譯器啟動(dòng)80位的內(nèi)部臨時(shí)運(yùn)算寄存單元。20微軟編譯器的longdouble變量只占8字節(jié)的內(nèi)存,但longdouble和double是不同的數(shù)據(jù)類型。字符型整型浮點(diǎn)型統(tǒng)稱為算術(shù)類型。這樣數(shù)據(jù)的狀態(tài)通過變量來(lái)索引,變量由這里介紹的類型名引入,通過定義語(yǔ)句分配內(nèi)存。例如:doubled;shorts;longn;變量d具有類型屬性double,其數(shù)據(jù)占有8字節(jié)的內(nèi)存。short型變量s具有2字節(jié)內(nèi)存,long型變量n具有4字節(jié)內(nèi)存。21三、算術(shù)負(fù)運(yùn)算與補(bǔ)碼轉(zhuǎn)換一個(gè)十進(jìn)制數(shù)可以用字符串抽象的表示為:具體展開為:
字符串中的字符就限制在0,1,2,3,4,5,6,7,8,9十個(gè)字符數(shù)碼中取值。十進(jìn)制數(shù)的基數(shù)為10。遵循逢十進(jìn)一的運(yùn)算規(guī)則。10k稱為第k+1位數(shù)字的權(quán)。22例如:,是第3位數(shù)的權(quán),其結(jié)果是三位數(shù)的值。一般地基數(shù)為r的r進(jìn)制數(shù)的值可以表示為:其含義就是:其中可以是0,1,2,...,r-1中的數(shù)碼,rk稱為第k+1位數(shù)字的權(quán)即以r為底的k次冪,遵循逢r進(jìn)位的原則。這樣從上面一般的公式得到二進(jìn)制數(shù)的值為:整型數(shù)分有符號(hào)和無(wú)符號(hào)兩種。無(wú)符號(hào)整數(shù)的最高的位數(shù)為該數(shù)的有機(jī)組成部分。有符號(hào)整數(shù)其最高的位用于識(shí)別數(shù)的正負(fù),最高為0表示一個(gè)正數(shù),1則表示負(fù)數(shù)。 23
例如:8位長(zhǎng)的二進(jìn)制數(shù)00000001b=+1d,01111111b=+127d,00000000b=-127d正數(shù)不做補(bǔ)碼原碼轉(zhuǎn)換,即正數(shù)的原碼、補(bǔ)碼相同。例如:對(duì)于二進(jìn)制數(shù)11111111可以理解為無(wú)符號(hào)數(shù)的255,也可以理解為原碼-127,同時(shí)可以視為-1的補(bǔ)碼。
求補(bǔ)的含義分為兩種:一種是直接求補(bǔ),另一種是間接求補(bǔ)。直接求補(bǔ)是C/C++語(yǔ)言的單目算術(shù)負(fù)運(yùn)算,其含義為對(duì)于一個(gè)數(shù)取補(bǔ)就是對(duì)單目操作數(shù)按位求反最低位加1,按位求反操作就是1切換為0,0切換為1。算術(shù)負(fù)運(yùn)算的源操作數(shù)無(wú)論數(shù)的正負(fù)。24例如:2進(jìn)制數(shù)16進(jìn)制數(shù)2進(jìn)制數(shù)16進(jìn)制數(shù)原操作數(shù):11000011c3001111013d按位取反001111003c11000010c2最低位加1001111013d11000011c3十六進(jìn)制數(shù)3d直接求補(bǔ)的結(jié)果為c3。十六進(jìn)制數(shù)c3直接求補(bǔ)的結(jié)果為3d。例如語(yǔ)句:
printf("0x%x,0x%x\n",-0x10234567,-0xefdcba99);輸出結(jié)果:0xefdcba99,0x10234567從上可以看出直接求補(bǔ)偶次得到原來(lái)的操作數(shù)。25間接求補(bǔ)運(yùn)算僅對(duì)最高位為1的有符號(hào)數(shù)進(jìn)行。當(dāng)內(nèi)存數(shù)據(jù)最高位為1時(shí),如果需要執(zhí)行有符號(hào)數(shù)的轉(zhuǎn)換,以便得到這個(gè)數(shù)的原碼,間接求補(bǔ)運(yùn)算發(fā)生作用。 間接求補(bǔ)的運(yùn)算規(guī)則可根據(jù)下面二個(gè)步驟進(jìn)行:1.將最高位的1變?yōu)?,這就是取負(fù)數(shù)的絕對(duì)值。2.對(duì)負(fù)數(shù)的絕對(duì)值執(zhí)行直接求補(bǔ)運(yùn)算。例如對(duì)于最高位為1的16進(jìn)制數(shù)ae,d2的二次求補(bǔ)為:16進(jìn)制數(shù)2進(jìn)制數(shù)16進(jìn)制數(shù)2進(jìn)制數(shù)數(shù)據(jù)的原值ae10101110d211010010最高位清02e001011105201010010按位取反d111010001ad10101101最低位加1d211010010ae1010111026下面兩個(gè)步驟也可以得到最高位為1的數(shù)(視為負(fù)數(shù))的原碼:
1.對(duì)負(fù)數(shù)進(jìn)行直接求補(bǔ)運(yùn)算。由此得到負(fù)數(shù)原碼的絕對(duì)值
2.將最高位設(shè)置為1。這也就是在負(fù)數(shù)的絕對(duì)值之前加上負(fù)號(hào)例如對(duì)于最高位為
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第四單元 撰寫演講稿訓(xùn)練-2022-2023學(xué)年八年級(jí)語(yǔ)文下冊(cè)單元寫作課堂(部編版)解析版
- 圖書館靜壓樁施工合同
- 樂器槽探施工合同
- 文化傳媒法定代表人招聘合同
- 建筑施工設(shè)備合同樣本
- 產(chǎn)業(yè)園區(qū)招商政府顧問聘用合同
- 2022幼兒園督導(dǎo)工作計(jì)劃
- 現(xiàn)代制造技術(shù)在農(nóng)業(yè)機(jī)械制造業(yè)中的應(yīng)用
- 如何保護(hù)患者合法權(quán)益、知情同意及告知制度相關(guān)知識(shí)培訓(xùn)課件
- 兄弟結(jié)婚祝福語(yǔ)15篇
- 2022-2023學(xué)年廣東省東莞市高二(上)期末英語(yǔ)試卷(含答案解析)
- 養(yǎng)老機(jī)構(gòu)風(fēng)險(xiǎn)管控清單
- 多元線性回歸分析(Eviews論文)
- 大學(xué)生暑期社會(huì)實(shí)踐證明模板(20篇)
- 2023-2024學(xué)年北京市石景山區(qū)石景山實(shí)驗(yàn)小學(xué)六年級(jí)數(shù)學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含答案
- 民事起訴狀(-針對(duì)培訓(xùn)類退費(fèi))-模板
- canopen應(yīng)用指南man can301ig中文
- 廈門大學(xué)招生宣傳
- 第三單元復(fù)習(xí) 課件 語(yǔ)文小學(xué)四年級(jí)上冊(cè)統(tǒng)編版(部編版)18張PPT
- 安全閥使用說(shuō)明書
- 抖音個(gè)人IP代運(yùn)營(yíng)服務(wù)合同
評(píng)論
0/150
提交評(píng)論