c++2 簡單的程序設(shè)計_第1頁
c++2 簡單的程序設(shè)計_第2頁
c++2 簡單的程序設(shè)計_第3頁
c++2 簡單的程序設(shè)計_第4頁
c++2 簡單的程序設(shè)計_第5頁
已閱讀5頁,還剩193頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章簡單的程序設(shè)計C++語言程序設(shè)計2本章主要內(nèi)容2.1字符集、標(biāo)識符與關(guān)鍵字2.2基本數(shù)據(jù)類型2.3常量與變量2.5運算符與表達式2.4不同類型數(shù)據(jù)的轉(zhuǎn)換2.6語句及基本控制結(jié)構(gòu)3C++字符集(英文)大小寫的英文字母:A~Z,a~z數(shù)字字符:0~9特殊字符:空格 ! # % ^ & *

_(下劃線) + = - ~ < > / \ ' " ; . , () [] {}|字符集、標(biāo)識符與關(guān)鍵字除字符型數(shù)據(jù)外4詞法記號:最小的詞法單元關(guān)鍵字

C++預(yù)先聲明的單詞,都是由小寫字母組成的(P19)標(biāo)識符

程序員聲明的單詞,它命名程序正文中的一些實體,比如變量名、函數(shù)名、類名、對象名等文字

程序中直接使用符號表示的數(shù)據(jù)(常量)操作符

用于實現(xiàn)各種運算的符號分隔符

(){},:;

用于分隔各個詞法記號或程序正文空白符 空格、制表符(TAB鍵產(chǎn)生的字符)、換行符(Enter鍵所產(chǎn)生的字符)和注釋的總稱★字符集、標(biāo)識符與關(guān)鍵字★5標(biāo)識符的構(gòu)成規(guī)則不能與關(guān)鍵字相同以大寫字母、小寫字母或下劃線(_)開始??梢杂梢源髮懽帜?、小寫字母、下劃線(_)或數(shù)字0~9組成。大小寫敏感。沒有明確規(guī)定長度。字符集、標(biāo)識符與關(guān)鍵字6判斷以下自定義標(biāo)識符是否合法apple、_Student、_123、No1、max_num合法的51job、max-num、abc$、float、true不合法的良好的標(biāo)識符命名習(xí)慣

1、Unix常用的命名法

my_age、num_of_student2、駝峰式命名法

myAge、numOfStudent3、匈牙利標(biāo)記法

iMyCar、bIsRight7什么是數(shù)據(jù)類型? 數(shù)據(jù)是程序處理的對象,數(shù)據(jù)根據(jù)其本身的特點進行分類,從而形成不同的數(shù)據(jù)類型。例:整數(shù)、實數(shù)、字符、字符串、邏輯“真/假”、“是/否”、2012-2-20數(shù)據(jù)類型不同類型的數(shù)據(jù)有不同的處理方法【取值范圍,存儲空間,運算方式】8數(shù)組型指針型枚舉型結(jié)構(gòu)體類型共用體類型類(C++)數(shù)據(jù)類型(type)構(gòu)造數(shù)據(jù)類型(自定義類型)基本類型布爾型bool字符型charASCII碼整型int實型(浮點型)單精度型float雙精度型doublevoid型9修飾符在C++中描述為了更加準(zhǔn)確的描述數(shù)據(jù)類型,提供了4個關(guān)鍵字用來修飾基本的數(shù)據(jù)類型(除bool類型):

1、長型long2、短型short3、有符號signed4、無符號unsigned基本數(shù)據(jù)類型10類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占字節(jié)整型字符型實型有無[signed]int4-2147483648~2147483647[signed]short[int]2

-32768~32767[signed]long[int]4-2147483648~21474836474unsigned

int0~429496729540~4294967295unsigned

long[int]unsigned

short[int]20~65535有float4-3.4e-38~3.4e38有double8-1.7e-308~1.7e308有l(wèi)ongdouble16-1.2e-4932

~1.2e4932有[signed]char1-128~127說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨編譯系統(tǒng)不同而不完全相同。無unsignedchar10~255

基本數(shù)據(jù)類型11基本數(shù)據(jù)類型0111111111111111short型:最大:327671000000000000000最小:-32768數(shù)據(jù)類型

—整型數(shù)據(jù)及取值范圍1111111111111111unsignedshort型:最大:655350000000000000000最小:0-215~(215-1)0~(216-1)最高位代表符號(符號位):0為正,1為負(fù)【補碼】12121、short: 僅用來修飾int,稱為短整型,占2字節(jié)內(nèi)存,也可直接簡寫為short;2、long:僅修飾int和double,在不同的編譯環(huán)境中使用long修飾的數(shù)據(jù)所占內(nèi)存不同。

3、unsigned:用來修飾char、short、int和long,表示該數(shù)據(jù)類型為無符號數(shù)。

4、signed:用來修飾char、short、int和long,表示該數(shù)據(jù)類型為有符號數(shù);

為缺省設(shè)置(char除外)。2023/2/413回顧:計算機中的編碼⑴無符號整數(shù)(unsignedinteger)表示正整數(shù),以相應(yīng)的二進制形式表示。取值范圍由字長決定:字長——8位可表示0~255(28-1)范圍內(nèi)的所有正整數(shù)0000000001000000012000000102541111111025511111111256(28-1)2023/2/414回顧:計算機中的編碼⑴無符號整數(shù)(unsignedinteger)表示正整數(shù),以相應(yīng)的二進制形式表示。取值范圍由字長決定:字長——8位可表示0~255(28-1)范圍內(nèi)的所有正整數(shù)字長——16位(unsignedshort)可表示0~65535(216-1)范圍內(nèi)的所有正整數(shù)字長——32位(unsignedint或long)可表示0~232-1范圍內(nèi)的所有正整數(shù)。2023/2/415回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)既可表示正整數(shù),又可表示負(fù)整數(shù)。0——正號“+”(正數(shù));1——負(fù)號“-”(負(fù)數(shù));010111011字長等于n位小數(shù)點符號位n-1位表示數(shù)值2023/2/416回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)既可表示正整數(shù),又可表示負(fù)整數(shù)。3種編碼方法:①原碼表示②反碼表示③補碼表示0——正號“+”(正數(shù));1——負(fù)號“-”(負(fù)數(shù));2023/2/417回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示數(shù)值位:數(shù)值本身的絕對值對應(yīng)的二進制形式。01011101字長等于8位符號位7位表示數(shù)值0——正號“+”(正數(shù));1——負(fù)號“-”(負(fù)數(shù))93[+93]原=010111011符號位[-93]原=110111012023/2/418回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示[+1]原=00000001[-1]原=10000001[+7]原=00000111[-7]原=10000111[+127]原=01111111[-127]原=11111111絕對值相同的正整數(shù)、負(fù)整數(shù),其原碼:⒈符號位不同;⒉其他數(shù)值位相同;【結(jié)論1】[+0]原=00000000[-0]原=10000000【結(jié)論2】

0的原碼不惟一2023/2/419回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示數(shù)值位:數(shù)值本身的絕對值對應(yīng)的二進制形式。01111111[+127]原=01111111[-127]原=1111111111111111[+0]原=00000000[-0]原=100000002023/2/420回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示數(shù)值位:數(shù)值本身的絕對值對應(yīng)的二進制形式。【缺點】⒈不能直接對兩個同號數(shù)相減,即A-B;如、將39和56兩個十進制數(shù)的原碼直接相減-100100011100110011011111[+39]原[+56]原[-111]原00100101[-17]原2023/2/421回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示數(shù)值位:數(shù)值本身的絕對值對應(yīng)的二進制形式?!救秉c】⒈不能直接對兩個同號數(shù)相減,即A-B;⒉不能直接對兩個異號數(shù)相加,即A+(-B);如、將39和(-56)兩個十進制數(shù)的原碼直接相減+100100011101110011101111[+39]原[-56]原[-95]原00100101[-17]原2023/2/422回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——原碼表示數(shù)值位:數(shù)值本身的絕對值對應(yīng)的二進制形式。【缺點】⒈不能直接對兩個同號數(shù)相減,即A-B;如、將39和56兩個十進制數(shù)的原碼直接相減⒉不能直接對兩個異號數(shù)相加,即A+(-B);如、將39和(-56)兩個十進制數(shù)的原碼直接相減⑵有符號整數(shù)(signedinteger)——反碼表示⑵有符號整數(shù)(signedinteger)——補碼表示反碼僅作為求補碼的中間形式2023/2/423回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——反碼表示表示規(guī)則:①正整數(shù)的反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反;[+93]原=01011101[+93]反=0101110101011101字長等于8位[-93]原[-93]反1=101000100100010=110111012023/2/424回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——反碼表示[+1]反=00000001[-1]反=11111110[+7]反=00000111[-7]反=11111000[+127]反=01111111[-127]反=10000000[+0]反=00000000[-0]反=11111111【結(jié)論3】

0的反碼不惟一2023/2/425回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——反碼表示表示規(guī)則:①正整數(shù)的反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反;01111111[+127]反=01111111[-127]反=1000000010000000[+0]反=00000000[-0]反=111111112023/2/426回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——反碼表示表示規(guī)則:①正整數(shù)的反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反;[-7]反=11111000[-7]原=10000111取反取反對反碼再求一次反,會得到該數(shù)的原碼。2023/2/427回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示表示規(guī)則:①正整數(shù)的補碼、反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反,然后對整個數(shù)加1;[-7]原[-7]反=11111000=10000111[-7]補=111110010000111111110001111100101X為負(fù)整數(shù)時,[X]補=[X]反+12023/2/428回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示[-1]反

=11111110[-127]反=10000000=[+0]原[-0]補【結(jié)論4】

0的補碼惟一[-1]補

=11111111[-127]補=10000001=00000000[+0]補=[+0]反[-1]原=10000001[-127]原=11111111=00000000+111111111100000000字長等于8位[-0]反2023/2/429回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示01111111[+127]補=01111111[-128]補=1000000010000000[+0]補=[-0]補=00000000【注意】用補碼表示的數(shù)的范圍比原碼和反碼多一個數(shù)[-127]補=10000001100000012023/2/430回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示表示規(guī)則:①正整數(shù)的補碼、反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反,然后對整個數(shù)加1;[-7]補=11111001[-7]原=10000111取補取反對補碼再求一次補,會得到該數(shù)的原碼(除了[-128]補)10000110加12023/2/431回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示表示規(guī)則:①正整數(shù)的補碼、反碼與原碼相同;②負(fù)整數(shù),符號位為1,數(shù)值位為原碼相應(yīng)數(shù)值位取反,然后對整個數(shù)加1;表示范圍:-128

+127【特點】用補碼進行運算,減法可以用加法來實現(xiàn)。[A]補

+[B]補[A+B]補=[A]補

+[-B]補[A-B]補=2023/2/432回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示【例1】計算7-6-100000100000111000000001+100000011111111000000001[7]補[-6]補[7]原[6]原[1]原1[1]補字長等于8位溢出[7]原

-[6]原[7-6]原=[7]補

+[-6]補[7-6]補=2023/2/433回顧:計算機中的編碼⑵有符號整數(shù)(signedinteger)——補碼表示【例2】用補碼計算39-56=?[39-56]補=[39]補+[-56]補+100100010011110011011111[+39]補[-56]補[?]補0010010000100101[-17]原取反加1[-17]補2023/2/434回顧:計算機中的編碼三種定點整數(shù)表示方法的比較⑴無符號整數(shù)——[0,2n-1]⑵有符號整數(shù)⒈原碼表示——[-(2n-1-1),2n-1-1]⒉反碼表示——[-(2n-1-1),2n-1-1]⒊補碼表示——[-2n-1

,2n-1-1]010111011字長等于n位2023/2/435回顧:計算機中的編碼三種整數(shù)表示方法的比較00000000字長等于80000000101111111100000001000000111111111無符號整數(shù)原碼補碼0112712812925501127-0-1-12701127-128-127-136數(shù)據(jù)類型

—整型數(shù)據(jù)及取值范圍類型 說明符 位數(shù) 數(shù)值范圍 短整 short 16 -32768~32767基本 int 32 -231~(231-1)長整 long 32 -231~(231-1)無符號

unsignedshort 16 0~65535

unsigned[int] 32 0~(232-1)

unsignedlong 32 0~(232-1) 基本數(shù)據(jù)類型37typedef重定義類型為一個已有的數(shù)據(jù)類型另外命名。語法形式:typedef已有類型名新類型名表;例如:typedefdoubleArea,Volume;typedefintNatural;Naturali1,i2;Areaa;Volumev;類型重定義語句多個標(biāo)識符,用逗號分隔。一個已有數(shù)據(jù)類型聲明多個別名38定義:程序運行時其值不能改變的量(即常數(shù))。其表示方式自動決定了它們的數(shù)據(jù)類型。例:123,3.14,"A",'A'

1、常量常量和變量常量:包括字面(直接)常量和符號常量兩類。39整型常量【表示方法】:十進制整型常量:由數(shù)字0~9和正負(fù)號表示.八進制整型常量:以0開頭,后跟數(shù)字0~7表示例:0100

=()10?十六進制整型常量:以0x開頭,后跟0~9,a~f,A~F表示例:0x100=()10?64十進制:123八進制:-0123=-()10十六進制:0x123=(

)102561*82+2*81+3*801*162+2*161+3*160常量和變量40整型常量【整型常量的類型】:根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母u或U,認(rèn)為是unsignedint型常量在整常量后加字母l或L,認(rèn)為是longint型常量長整型:123L,123l無符號型:123U,123u常量和變量41整型常量【整型常量的類型】:根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母u或U,認(rèn)為是unsignedint型常量在整常量后加字母l或L,認(rèn)為是longint型常量常量和變量#include<iostream>usingnamespacestd;intmain(){ cout<<-1U<<endl; return0;}輸出:429496729542實型常量【表示方法】:十進制數(shù)形式:(必須有小數(shù)點)

如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))

如12.3e3,123E2,1.23e4【類型】:缺省為double型后綴F(或f)

float型,12.3f后綴L(或l)

longdouble型e5,1.2E-3.5錯誤常量和變量2023/2/443回顧:計算機中的編碼浮點數(shù)的表示方式:M——尾數(shù)E——階碼R——階碼的基數(shù)十進制的浮點數(shù)M(尾數(shù))——十進制定點小數(shù);E(階碼)——十進制定點整數(shù);R(階碼的基數(shù))——10;-56.625=(-0.56625)×1020.0034756=(0.34756)×10-22023/2/444回顧:計算機中的編碼十進制的浮點數(shù)M(尾數(shù))——十進制定點小數(shù);E(階碼)——十進制定點整數(shù);R(階碼的基數(shù))——10;二進制的浮點數(shù)M(尾數(shù))——二進制定點小數(shù);E(階碼)——二進制定點整數(shù);R(階碼的基數(shù))——2;(-111000.101)2

=(-0.111000101)2×2(110)2

-56.625=(-0.56625)×1022023/2/445回顧:計算機中的編碼計算機中二進制的浮點數(shù)的表示:M(尾數(shù))——二進制定點小數(shù);定點小數(shù)——原碼或補碼。E(階碼)——二進制定點整數(shù);定點整數(shù)——補碼。R(階碼的基數(shù))——2,隱含;00字長等于n階碼符號尾數(shù)符號階碼尾數(shù)(-111000.101)2

=(-0.111000101)2×2(110)2

2023/2/446回顧:計算機中的編碼計算機中浮點數(shù)的表示若某機器字長為16位,前6位表示階碼,后10位表示尾數(shù)。01字長等于16(-111000.101)200110111000101E(階碼)=(110)2

M(尾數(shù))=(-0.111000101)2

=(-0.111000101)2×2(110)20001110101補碼方便階碼加、減原碼補碼12023/2/447回顧:計算機中的編碼若計算機的字長為2個字節(jié),某存儲單元中的機器碼0110110001011100表示一個浮點數(shù),該浮點數(shù)的階碼為4位(含階符1位,補碼表示),尾數(shù)位12位(含數(shù)符1位,補碼表示),則與該浮點數(shù)等值的十進制數(shù)是

。-29.1252023/2/448回顧:計算機中的編碼011011000101110001101011101000110110101110100100取反加1(-0.01110100100)2×2(110)2(-11101.00100)2小數(shù)點右移6位=-29.12549字符、字符串常量【字符常量】:

'a'

'A'

字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲,占1字節(jié),用7個二進制位如'A'——65,'a'——97

'0'——48常量和變量2023/2/450回顧:計算機中的編碼ASCII碼AmericanStandardCodeforInformationInterchange美國信息交換標(biāo)準(zhǔn)代碼b0b1b2b3b4b5b6b7一個字節(jié)有效編碼位27=128個字符=96個可打印字符+32個控制字符數(shù)字0~9大寫字母A~Z小寫字母a~z02023/2/451回顧:計算機中的編碼ASCII碼AmericanStandardCodeforInformationInterchange美國標(biāo)準(zhǔn)信息交換碼b0b1b2b3b4b5b6b7有效編碼位數(shù)字01010000數(shù)字11010001數(shù)字21010010數(shù)字910101014849505700002023/2/452回顧:計算機中的編碼ASCII碼AmericanStandardCodeforInformationInterchange美國標(biāo)準(zhǔn)信息交換碼b0b1b2b3b4b5b6b7有效編碼位大寫字母A0100001大寫字母O0101111大寫字母P0110000大寫字母Z011011065798090151100002023/2/453回顧:計算機中的編碼ASCII碼AmericanStandardCodeforInformationInterchange美國標(biāo)準(zhǔn)信息交換碼b0b1b2b3b4b5b6b7有效編碼位小寫字母a1100001小寫字母o1101111小寫字母p1110000小寫字母z111011065+3279+3280+3290+3215110000字符常量54Page54常量和變量字符、字符串常量55【字符常量】:

'a'

'A'

'\a'響鈴'\n'換行

\為轉(zhuǎn)義符'A''\x41''\101'字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲,占1字節(jié),用7個二進制位如'A'——65,'a'——97

'0'——48,'\n'——10常量和變量56用轉(zhuǎn)義字符“\”后跟一個字符表示一個單一的不可顯示的或從鍵盤無法輸入的字符。字符常量轉(zhuǎn)義字符\

'\a'響鈴'\n'換行

\為轉(zhuǎn)義符

'A''\x41''\101'常量和變量57\a

0x07 bell(響鈴)\n 0x0A 換行(移動到下一行開頭)\r 0x0D 回車(移動到本行開頭)\t 0x09 水平制表符(下一制表區(qū)開頭)\b 0x08 Backspace(退格)\\ 0x5C 字符

\\" 0x22 雙引號"\'

0x27 單引號'

字符常量轉(zhuǎn)義字符Pleaseenter"Yes"or"No"cout<<"Pleaseenter\"Yes\"or\"No\"";58\a 0x07 bell(響鈴)\n 0x0A

換行\(zhòng)r 0x0D 回車\t 0x09 水平制表符\b 0x08 Backspace(退格)\\ 0x5C 字符‘\’\" 0x22 雙引號"\' 0x27 單引號'

\ddd1-3位8進數(shù)表示字符的ASCII碼

\xhh1-2位16進數(shù)表示字符的ASCII碼字符常量轉(zhuǎn)義字符常量和變量59字符常量轉(zhuǎn)義字符Page59'\x41''\101'常量和變量

轉(zhuǎn)義字符及其含義<轉(zhuǎn)義字符含義\n\v\r\a\'\ddd\t\b\f\\\"\xhh轉(zhuǎn)義字符含義換行垂直制表回車(不換行)響鈴單引號1~3位8進制數(shù)代表的字符水平制表(跳到下一個輸出區(qū))退格換頁反斜線雙引號1~2位16進制數(shù)代表的字符如'\101'

'A'

'\012'

'\n'

'\376'

’’

'\x61'

'a'

'\60'

'0'

例:'A''\101''\x41'

65字符、字符串常量61【字符常量】:

'a'

'A'

'\a'響鈴'\n'換行

\為轉(zhuǎn)義符'A''\x41''\101'【字符串常量】:"C++language"字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲,占1字節(jié),用7個二進制位如'A'——65,'a'——97

'0'——48,'\n'——10常量和變量62轉(zhuǎn)義字符的使用-例1#include<iostream>usingnamespacestd;voidmain(){ cout<<"\101\x42C\n"<<endl;cout<<"Isay:\"Howareyou?\"\n"<<endl;cout<<"\\CProgram\\\n"<<endl;cout<<"Turbo\'C\'"<<endl;}常量和變量63轉(zhuǎn)義字符的使用-例2#include<iostream>usingnamespacestd;voidmain(){cout<<"Y\b="<<endl;}運行結(jié)果:屏幕顯示:=打印機輸出:¥常量和變量64轉(zhuǎn)義字符的使用-例3#include<iostream>usingnamespacestd;voidmain(){ cout<<"1234567890"<<endl;cout<<"abc\t

de\rf\tg"<<endl;cout<<"h\ti\b\bjk"<<endl;}\n換行(移動到下一行開頭)\r 回車(移動到本行開頭)\t 水平制表符(下一制表區(qū)開頭)\b Backspace(退格)常量和變量65字符常量與字符串常量的區(qū)別

字符串常量:雙引號括起來的字符序列。

系統(tǒng)會在每一個字符串常量尾部加上字符常量'\0',表示“該字符串常量到此結(jié)束”。

寫字符串時不必加'\0'。例:"CHINA"

"a"

""CHINA\0a

\0\066例:'a'

"a"表示形式:單引號

雙引號占用空間:

1字節(jié)2字節(jié)

011000010110000100000000字符常量與字符串常量的區(qū)別aa\097常量和變量67布爾常量邏輯(布爾)常量:false和true兩個值一個字節(jié)存儲false——0true——1常量與變量cout<<"true:"<<true<<endl;cout<<"false:"<<false<<endl;68符號常量用標(biāo)識符代表一個常量。定義格式:#define符號常量常量1、常量常量和變量#include<iostream>#definePRICE30usingnamespacestd;voidmain(){intnum,total;num=10;total=num*PRICE;cout<<"total="<<total;}運行結(jié)果:total=300一般用大寫字母是宏定義預(yù)處理命令,不是C++語句【優(yōu)點】含義清楚,一改全改如:#definePI3.141592669符號常量(預(yù)處理命令)常量與變量#include<iostream>#definePI3.14159usingnamespacestd;voidmain(){ floatr,area; r=10;

cout<<"area="<<area<<endl;}area=PI*r*r;area=3.14159*r*r;#define標(biāo)識符常量功能:用指定標(biāo)識符替換常量702、變量變量是在程序執(zhí)行中其值可以改變的量。變量是存儲信息的地方。實質(zhì)是內(nèi)存中具有特定屬性的一個存儲單元,在這個空間中可以進行數(shù)據(jù)的存儲和讀取。變量的三要素變量名:標(biāo)識符,要“見名知意”;數(shù)據(jù)類型變量值常量和變量3存儲單元變量值變量名(代表內(nèi)存地址)a71變量定義(聲明)數(shù)據(jù)類型變量名;

數(shù)據(jù)類型變量名1,變量名2,…,變量名n;

例:inta,b;

charc;

doublex,y;先定義(聲明),后使用1、分配字節(jié)數(shù)2、數(shù)的表示范圍3、可以進行的運算合法標(biāo)識符72變量定義(聲明)數(shù)據(jù)類型變量名;

數(shù)據(jù)類型變量名1,變量名2,…,變量名n;

先定義(聲明),后使用1、分配字節(jié)數(shù)2、數(shù)的表示范圍3、可以進行的運算合法標(biāo)識符例1intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain73變量定義(聲明)數(shù)據(jù)類型變量名;

數(shù)據(jù)類型變量名1,變量名2,…,變量名n;

先定義(聲明),后使用1、分配字節(jié)數(shù)2、數(shù)的表示范圍3、可以進行的運算合法標(biāo)識符例2floata,b,c;c=a%b;//illegaluseoffloatingpointinfunctionmain74變量定義(聲明)變量初始化:在變量聲明時直接賦予一個初始值。數(shù)據(jù)類型變量名;

數(shù)據(jù)類型變量名1,變量名2,…,變量名n;charc="a";先定義(聲明),后使用例:inta=1,b=-3,c;floatdata=3.67;charch='A';intx=1,y=1,z=1;intx=y=z=1;/*錯誤*/75inta=5;表示系統(tǒng)要做那些工作?給出了一個名字為a的標(biāo)識符定義了一個整型變量系統(tǒng)自動為變量a分配了一個內(nèi)存空間(一般4個字節(jié)),其地址已經(jīng)確定。該變量存放的內(nèi)容為整數(shù)5變量定義(聲明)先定義(聲明),后使用76變量定義(聲明)先定義(聲明),后使用shorta=5;shortb=-3,c;……000000000000010111111111111110110101001010011011……2字節(jié)2字節(jié)2字節(jié)內(nèi)存地址內(nèi)存地址內(nèi)存地址變量名abc編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元。隨機數(shù)內(nèi)存77變量定義(聲明)先定義(聲明),后使用整型變量占字節(jié)數(shù)隨機器不同而不同short≤int≤long可用sizeof(類型標(biāo)識符)測量【注意】整型變量的取值范圍(超出范圍,出現(xiàn)溢出,見P20)78#include<iostream>usingnamespacestd;voidmain(){ shorta,b; a=32767;

b=a+1; cout<<"sizeof(a)="<<sizeof(a)<<",a="<<a<<endl; cout<<"sizeof(b)="<<sizeof(b)<<",b="<<b<<endl;}輸出:溢出常量和變量79變量定義(聲明)先定義(聲明),后使用

浮點型變量float:占4字節(jié),提供6~7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字Longdouble:占16字節(jié),提供18~19位有效數(shù)字【注意】因為有效數(shù)字有限,在進行舍入時,可能會產(chǎn)生誤差。floata=111111.111;/*a=111111.1*/doubleb=111111.111;/*b=111111.111*/80#include<iostream>usingnamespacestd;voidmain(){

floata,b; a=123456.789e5; b=a+20; cout.precision(15); cout<<b<<endl;}輸出:對于浮點型數(shù)據(jù),應(yīng)該避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,以免”丟失“小的數(shù)。81變量定義(聲明)先定義(聲明),后使用

字符變量charc1,c2;占1個字節(jié),存儲ASCII碼字符串常量?!咀⒁狻縞har與int數(shù)據(jù)通用能進行算術(shù)運算。#include<iostream>usingnamespacestd;voidmain(){charc1,c2;c1=97;c2=98;cout<<c1<<"\t"<<c2<<endl;

cout<<(int)c1<<"\t"<<(int)c2<<endl;}82變量定義(聲明)先定義(聲明),后使用

字符變量charc1,c2;占1個字節(jié),存儲ASCII碼字符串常量?!咀⒁狻縞har與int數(shù)據(jù)通用,能進行算術(shù)運算。chara='D';/*a=68;*/intx='A'+5;/*x=65+5;*/ints='!'+'G'/*s=33+71;*/【沒有字符串變量,用字符數(shù)組存放】83#include<iostream>usingnamespacestd;voidmain(){charc1,c2;c1='a';c2='b';c1=c1-32;c2=c2-32;

cout<<c1<<"\t"<<c2<<endl; /*以字符形式輸出*/}輸出:大小寫字母的轉(zhuǎn)換84#include<iostream>usingnamespacestd;voidmain(){ unsignedcharc1; signedcharc2; charc3; c1=128;

c2=128; c3=128;

cout<<(int)c1<<"\t"<<(int)c2<<"\t"<<(int)c3<<endl;}字符型:signedchar-128~127

unsignedchar0~255結(jié)果:c1=128c2=-128c3=-128溢出85常量和變量綜合舉例#definePRICE12.5#include<iostream>usingnamespacestd;voidmain(){ intnum=3; floattotal; charch1,ch2='D'; total=num*PRICE; ch1=ch2-'A'+'a';

cout<<"total="<<total<<",ch1="<<ch1<<endl;}宏定義變量定義輸出結(jié)果輸出:符號常量名用大寫,變量名用小寫PRICE=40;/*錯誤,不能給符號常量賦值*/8686常變量常變量:定義變量時用關(guān)鍵字const聲明,變量的值在程序運行期間不能改變。格式:

const

數(shù)據(jù)類型常變量名=初始值;例:const

doublePI=3.14159;//PI是常變量比較:doublepi;//pi是變量pi=3.14159【注意】常變量定義時,必須初始化。87聲明常變量用關(guān)鍵字const做限定符,且必須為該常變量賦初值。在整個程序運行期間,不允許改變常變量的值。常變量const

doublePI;PI=3.14159;常量與變量88運算符與表達式C++運算符算術(shù)運算符:+-*/%++--關(guān)系運算符:<<===>>=!=邏輯運算符:!&&||位運算符:<<>>~|^&賦值運算符:=及其擴展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強制類型轉(zhuǎn)換:(類型)分量運算符:.->下標(biāo)運算符:[]其它:函數(shù)調(diào)用運算符()學(xué)習(xí)運算符應(yīng)注意:1、運算符功能2、與運算量關(guān)系要求運算量個數(shù)要求運算量類型3、優(yōu)先級4、結(jié)合方向89表達式程序中,通過表達式完成對數(shù)據(jù)的處理?;拘问剑篜age89運算符與表達式操作數(shù)1

運算符

操作數(shù)2操作數(shù)

運算符運算符

操作數(shù)表達式的值基本算術(shù)運算符

+-*/(若整數(shù)相除,結(jié)果取整)%(取余,操作數(shù)為整數(shù))90算術(shù)運算符與算術(shù)表達式運算符和表達式5/2=2-5/2=-2“向零取整”-5/2.0=-2.5有一個數(shù)為float或double,結(jié)果為double基本算術(shù)運算符

+-*/(若整數(shù)相除,結(jié)果取整)%(取余,操作數(shù)為整數(shù))91算術(shù)運算符與算術(shù)表達式運算符和表達式5%2=1-5%2=-1(與被除數(shù)同號)5%-2=11%10=15%1=05.5%2(錯誤)基本算術(shù)運算符

+-*/(若整數(shù)相除,結(jié)果取整)%(取余,操作數(shù)為整數(shù))優(yōu)先級與結(jié)合性

先乘除(取余),后加減,同級自左至右說明:“-”可為單目運算符時,自右向左(右結(jié)合)92算術(shù)運算符與算術(shù)表達式運算符和表達式->*/%>+-(2)(3)(4)93算術(shù)運算符與算術(shù)表達式基本算術(shù)運算符

+-*/(若整數(shù)相除,結(jié)果取整)%(取余,操作數(shù)為整數(shù))優(yōu)先級與結(jié)合性++,--(自增、自減)例:i++;--j;Page93運算符和表達式操作數(shù)++++操作數(shù)->*/%>+-(2)(3)(4)94算術(shù)運算符與算術(shù)表達式++,--(自增、自減):將操作數(shù)的值加1(減1),重新寫回該操作數(shù)在內(nèi)存中原有的位置。種類:前置++i,--i(表達式值=i的值加(減)1)

在使用i之前,先使i的值加(減)1后置i++,i--(表達式值=i)在使用i之后,再使i的值加(減)1Page94運算符和表達式95算術(shù)運算符與算術(shù)表達式前置++i,--i

在使用i之前,先使i的值加(減)1后置i++,i--在使用i之后,再使i的值加(減)1運算符和表達式例

j=3;k=++j;

j=3;k=j++;

j=3;cout<<++j;

j=3;cout<<j++;

a=3;b=5;c=(++a)*b;

a=3;b=5;c=(a++)*b;

//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=496算術(shù)運算符與算術(shù)表達式++,--(自增、自減)說明:【1】++,--(自增、自減)不能用于常量和表達式如5++,(a+b)++【2】++,--(自增、自減)自右向左Page96運算符和表達式-,++,-->*/%>+-(2)(3)(4)例

-i++等價于-(i++)inti=3;cout<<-i++;//-397算術(shù)運算符與算術(shù)表達式++,--(自增、自減)說明:【1】++,--(自增、自減)不能用于常量和表達式如5++,(a+b)++【2】++,--(自增、自減)自右向左Page97運算符和表達式-,++,-->*/%>+-(2)(3)(4)例

++i++等價于++(i++)98算術(shù)運算符與算術(shù)表達式++,--(自增、自減)說明:【1】++,--(自增、自減)不能用于常量和表達式如5++,(a+b)++【2】++,--(自增、自減)自右向左Page98運算符和表達式-,++,-->*/%>+-(2)(3)(4)例 j+++k;(j++)+k;從左向右,將盡可能多的字符組成一個運算符99賦值運算符和賦值表達式

簡單的賦值運算符"="舉例

a=5

n=n+5表達式的類型

等號左邊對象的類型表達式的值

等號左邊對象被賦值后的值Page99運算符和表達式變量名=變量取值(常量或表達式)100賦值運算符和賦值表達式

——賦值表達式舉例a=5 表達式值為5a=b=c=5

表達式值為5,a,b,c均為5a=5+(c=6)

表達式值為11,a為11,c為6a=(b=4)+(c=6)

表達式值為10,a為10,b為4,c為6a=(b=10)/(c=2)

表達式值為5,a為5,b為10,c為2Page100運算符和表達式結(jié)合方向:自右向左101賦值運算符和賦值表達式

簡單的賦值運算符"="【說明】左側(cè)必須是變量,不能是常量或表達式3=x-2*y;a+b=3;賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達式值自動轉(zhuǎn)換成其左邊變量的類型inti;i=2.56;//舍棄浮點數(shù)的小數(shù)部分Page101運算符和表達式變量名=變量取值(常量或表達式)102賦值運算符和賦值表達式

復(fù)合的賦值運算符有10種復(fù)合賦值運算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=(位運算)例

a+=3

等價于a=a+3

x*=y+8

等價于x=x*(y+8)運算符和表達式103賦值運算符和賦值表達式

——賦值表達式舉例a+=a-=a*a相當(dāng)于

a=a+(a=a-a*a)Page103運算符與表達式-40inta=5;cout<<(a+=a-=a*a)<<endl;104逗號運算和逗號表達式格式表達式1,表達式2[,…,表達式n]求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達式2的值例a=3*5

,

a*4 x=(a=3,6*3)x=a=3,6*aPage104運算符和表達式//a=15,表達式值60//賦值表達式,表達式值18,x=18//逗號表達式,表達式值18,x=3105逗號運算和逗號表達式Page105運算符和表達式#include<iostream>usingnamespacestd;voidmain(){ intx,y=7;floatz=4;x=(y=y+6,y/z);cout<<"x="<<x<<endl;}運行結(jié)果:x=3106關(guān)系運算與關(guān)系表達式關(guān)系運算是比較簡單的一種邏輯運算,優(yōu)先次序為:

<<=>>===!=

優(yōu)先級相同(高)優(yōu)先級相同(低)關(guān)系表達式是一種最簡單的邏輯表達式其結(jié)果類型為bool,值只能為true

或false。例如:a>b,c<=a+b,x+y==3運算符與表達式107關(guān)系運算與關(guān)系表達式#include<iostream>usingnamespacestd;intmain(){ cout<<"true="<<true;cout<<"orfalse="<<false<<endl; cout<<"(\'a\'>90)="<<('a'>90)<<endl;}運算符與表達式true=1orfalse=0('a'>90)=1108邏輯運算與邏輯表達式邏輯運算符

!(非)&&(與)||(或)

優(yōu)先次序:高→低邏輯表達式

例如:(a>b)&&(++c==1)

其結(jié)果類型為bool,值只能為true

或false運算符與表達式inta=5,b=3,c=1;truefalsec=2&&運算符的“短路特性”inta=3,b=5,c=1;falsec=1109條件運算符與條件表達式一般形式(唯一的三元運算符)表達式1?表達式2:表達式3表達式1必須是bool類型執(zhí)行順序先求解表達式1,若表達式1的值為true,則求解表達式2,表達式2的值為最終結(jié)果若表達式1的值為false,則求解表達式3,表達式3的值為最終結(jié)果運算符與表達式cout<<(score>=60?"及格":"不及格");110條件運算符與條件表達式例:x=a>b?a:b;注意:條件運算符優(yōu)級高于賦值運算符表達式2、3的類型可以不同,條件表達式的最終類型為2和3中較高的類型。

x=a>b?a:b;運算符與表達式①②inta=5,b=3;5(輸出a,b中較大的值)111sizeof運算符語法形式

sizeof(類型名)

或sizeof(表達式)結(jié)果值:

“類型名”所指定的類型或“表達式”的結(jié)果類型所占的字節(jié)數(shù)。例:sizeof(short)sizeof(x)運算符與表達式112位運算——按位與(&)運算規(guī)則將兩個運算量的每一個位進行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001運算符與表達式113位運算——按位或(|)運算規(guī)則將兩個運算量的每一個位進行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111基本數(shù)據(jù)類型和表達式114位運算——按位異或(^)運算規(guī)則兩個操作數(shù)進行異或:

若對應(yīng)位相同,則結(jié)果該位為0,

若對應(yīng)位不同,則結(jié)果該位為1,舉例:計算0x39^0x2a0x39: 001110010x2a:(^)001010100x39^0x2a: 00010011運算符與表達式115位運算——取反(~)單目運算符,對一個二進制數(shù)按位取反。例:025:0000000000010101~025:1111111111101010運算符與表達式116位運算——移位左移運算(<<)左移后,低位補0,高位舍棄。相當(dāng)于×2右移運算(>>)右移后,低位:舍棄

高位:無符號數(shù):補0

有符號數(shù):補“符號位”相當(dāng)于/2運算符與表達式117運算符優(yōu)先級括號()++,--,sizeof,!*,/,%+,-==,!=位運算|^&&&||?:賦值運算=逗號運算,低高運算符與表達式118混合運算時數(shù)據(jù)類型的轉(zhuǎn)換

——隱含轉(zhuǎn)換一些二元運算符(算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和賦值運算符)要求兩個操作數(shù)的類型一致。在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進行轉(zhuǎn)換(即隱含轉(zhuǎn)換),基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù)char,short,int,unsigned,long,unsignedlong,float,double

低高轉(zhuǎn)換精度沒有損失119混合運算時數(shù)據(jù)類型的轉(zhuǎn)換

——隱含轉(zhuǎn)換賦值運算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。inta=5.3;邏輯運算當(dāng)參與運算的操作數(shù)必須是bool型時,如果操作數(shù)是其它類型,編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為false。cout<<('a'+10)<<“\t”<<(false||0);位運算的操作數(shù)必須是整數(shù),當(dāng)二元位運算的操作數(shù)是不同類型的整數(shù)時,也會自動進行類型轉(zhuǎn)換。不同類型數(shù)據(jù)的轉(zhuǎn)換120混合運算時數(shù)據(jù)類型的轉(zhuǎn)換

——隱含轉(zhuǎn)換floatfVal;doubledVal;intiVal;unsignedlongulVal;dVal=iVal*ulVal;iVal被轉(zhuǎn)換成unsignedlong運算結(jié)果轉(zhuǎn)換為doubledVal=ulVal+fVal;ulVal被轉(zhuǎn)換成float運算結(jié)果轉(zhuǎn)換為double不同類型數(shù)據(jù)的轉(zhuǎn)換類型的轉(zhuǎn)換是臨時性的,并不改變變量的數(shù)據(jù)類型,僅在運算的時刻對變量的值做了轉(zhuǎn)換。121混合運算時數(shù)據(jù)類型的轉(zhuǎn)換

——強制類型轉(zhuǎn)換語法形式:類型說明符(表達式)或(類型說明符)表達式強制類型轉(zhuǎn)換的作用是將表達式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型。不同類型數(shù)據(jù)的轉(zhuǎn)換盡量使用同種類型數(shù)據(jù)類型的轉(zhuǎn)換是臨時性的,并不改變變量的數(shù)據(jù)類型,僅在運算的時刻對變量的值做了轉(zhuǎn)換。floatfVale=(float)2.4;floatfVale=2.4f;122語句聲明語句表達式語句選擇語句循環(huán)語句跳轉(zhuǎn)語句復(fù)合語句標(biāo)號語句

程序的執(zhí)行流程由語句來控制123變量聲明變量初始化:在變量聲明時直接賦予一個初始值。intm=4,p=3,n(2);//說明m,p,n為基本整型變量,//且它們分別具有初始值4,3,2數(shù)據(jù)類型變量名;

數(shù)據(jù)類型變量名1,變量名2,…,變量名n;例:inta,b;

charc;

doublex,y;charc;c="a";124124常變量常變量:定義變量時用關(guān)鍵字const聲明,變量的值在程序運行期間不能改變。格式:

const

數(shù)據(jù)類型常變量名=初始值;例:const

doublePI=3.14159;//PI是常變量比較:doublepi;

溫馨提示

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

評論

0/150

提交評論