




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++程序設(shè)計第2章
基本數(shù)據(jù)類型和表達式C++的基本數(shù)據(jù)類型常量和變量簡單的輸入輸出控制指針和引用運算符和表達式主要內(nèi)容一、基本數(shù)據(jù)類型2.1C++基本數(shù)據(jù)類型基本類型整型字符型(char)浮點型布爾型短整型(shortint)整型(int)長整型(longint)單精度(float)雙精度(double)長雙精度(longdouble)類型符號關(guān)鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned
int0~65535320~4294967295unsigned
longunsigned
short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,2.2常量和變量一、常量定義:在程序中不變的量.分類:數(shù)值常量(整型常量和實型常量)和字符常量問:為什么將數(shù)值常量分為不同的類型?答:因為在賦值或函數(shù)調(diào)用時虛實結(jié)合要求數(shù)據(jù)類型匹配。問:如何區(qū)分?答:根據(jù)給定值所在范圍。1、整型常量有3種表示方式:十進制整數(shù)八進制整數(shù)(以0開頭的整數(shù))十六進制整數(shù)(以0X或0x開頭的整數(shù))如:123,-34,00123(=1*82+2*81+3*80)//等于數(shù)83
0X123//等于數(shù)291
-024,-0X32//不正確123L//長整型數(shù)123LU//無符號長整型數(shù)思考下列十六進制的整型常量表示中,()是錯誤的。0xe 0x4g 0X12 0XAE2.實型常量(只有十進制形式)(1)表現(xiàn)方式:由整數(shù)部分和小數(shù)部分組成一般形式:如21.456,-9.87。后加f表示單精度,加L表示長雙精度指數(shù)形式:如-314.2表示成-3.142E2
格式:數(shù)符數(shù)字部分指數(shù)部分E或e的前面要有數(shù)字,且E的后面的指數(shù)必須為整數(shù)。E2,2.1E3.5,e
//不合法注意在C++中,一個實型常數(shù)未說明則表示是double型。例:7.2;雙精度
3.2f;單精度
8.9l;長雙精度(2)類型:單精度:float-6位有效數(shù)字雙精度:double-12位有效數(shù)字長雙精度:longdouble-15位有效數(shù)字3.字符常量(1)表現(xiàn)方式普通的字符常量:用一對單引號加一個字符表示。如'a'注意:只能包含一個字符;區(qū)分大小寫字母、
'是定界符。轉(zhuǎn)義字符常量:以\開頭的字符序列。如'\n'表示換行符,'\007'表示響鈴符。字符數(shù)據(jù)在內(nèi)存中的存儲形式
將一個字符常量存放到內(nèi)存單元時,實際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符相應的ASCII代碼放到存儲單元中。
c1的值為′a′,c2的值為′b′,如下圖:它的存儲形式就與整數(shù)的存儲形式類似,在C++中字符型數(shù)據(jù)和整型數(shù)據(jù)之間就可以通用。4.字符串常量(1)表現(xiàn)方式:用雙引號括起來的字符序列。如”abc”(2)存儲形式:abc\0問:”abc\n”表示幾個字符?答:4個字符,占5個字節(jié)。(\n為轉(zhuǎn)義字符)(3)特點:字符常量和字符串常量在存儲方式上是不同的。字符常量只占一個字節(jié)的空間,而字符串常量除字符序列中每個字符占一個字節(jié)外,還要在最后多占一個字節(jié)空間用來保存一個'\0'字符(空字符)稱為字符串結(jié)束標志符號。它是系統(tǒng)自動增加的。(4)說明:一個長字符串可以占兩行或多行,但在最后一行之前的各行應用反斜杠結(jié)尾;如:cout<<“Hello\theworld”;則輸出Hellotheworld不要把字符與字符串混淆了。最短的字符串是空字符串(""),它僅由一個結(jié)尾符'\0'組成。charc;//定義一個字符變量c=′a′;c=″a″;√×思考:字符串常量“
hello”
和″abc\n″在內(nèi)存中分別占用多少空間?5.布爾常量(1)值:false(假)和true(真)二、變量定義:在程序執(zhí)行中其值可以改變的量1.變量的定義格式:數(shù)據(jù)類型變量1,變量2,….變量n;2.變量的初始化:定義時直接給變量賦值。這時所賦的一般是初始值,稱為變量初始化。intx=0;intx(0);如:
inta;a=300;注意有兩個值的概念:一個是數(shù)據(jù)值(存放在內(nèi)存空間中的數(shù)據(jù))另一個是地址值(所占內(nèi)存空間的起始地址)3、變量值內(nèi)容起始地址空間大小由類型決定與變量名a關(guān)聯(lián)對應變量值100110051009100d300三、符號常量定義:用一個符號名代表一個常量1.用const定義語法形式為:const數(shù)據(jù)類型說明符常量名=常量值;2.用預處理命令#define說明語法形式為:#define常量名常量值#definePI3.141592.3簡單的輸入/輸出控制一、預定義的插入符和提取符1.輸出語句格式:cout<<表達式1<<表達式2<<…<<表達式n;2.輸入語句格式:
cin>>變量1>>變量2>>…>>變量n;二、簡單的I/O格式控制(iomainip.h)操縱符作用dec設(shè)置數(shù)值數(shù)據(jù)的基數(shù)為10hex設(shè)置數(shù)值數(shù)據(jù)的基數(shù)為16oct設(shè)置數(shù)值數(shù)據(jù)的基數(shù)為8setfill(c)設(shè)置填充字符c,c可以是字符常量或字符變量setprecision(n)設(shè)置浮點數(shù)的小數(shù)位數(shù)為n(包括小數(shù)點)setw(n)設(shè)置字段寬度為n要求輸出的浮點數(shù)3.14159占6個位置,小數(shù)點后保留3位有效數(shù)字,空格用'0'代替,輸出語句為:cout<<setfill('0')<<setw(6)<<setprecision(4)<<3.14159;
輸出結(jié)果為:
03.142例2.4指針和引用一、指針1.指針的概念inti=100;int*p=&i;內(nèi)存┆i1001000H┆1004H┆p1000H2000H┆一般形式:[存儲類型]
數(shù)據(jù)類型
*指針變量名;合法標識符指針的目標變量的數(shù)據(jù)類型表示定義指針變量不是‘*’運算符例int
*p1,*p2;float*q;
注意:1、int*p1,*p2;
與int*p1,p2;2、指針變量名是p1,p2,不是*p1,*p23、指針變量只能指向定義時所規(guī)定類型的變量4、指針變量定義后,變量值不確定,應用前必須先賦值2.指針變量的定義3.與指針變量相關(guān)的運算符(1)&:取地址運算符(2)*:指針運算符例inti;
int*p=&i;變量必須已說明過類型應一致例
int*p=&i;
inti;例inti;
int*p=&i;
int*q=p;用已初始化指針變量作初值例main(){inti=10;
int*p;
*p=i;
cout<<*p;}危險!例
main(){inti=10;
int*p;
p=&i;
cout<<*p;}指針變量必須先賦值,再使用…...…...2000200420062005整型變量i10指針變量p200120022003隨機指針變量與其所指向的變量之間的
一些等價關(guān)系
例:
inti,*i_pointer=&i;3i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=33i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=3二、引用1.定義:引用通常被認為是另一個變量的別名2.格式:類型&引用名(變量名);或類型&引用名=變量名;一般情況下,定義引用時必須初始化,同時引用的類型與變量的類型一致。例如:inta=3;int&m=a;//或int&m(a);2.5運算符和表達式學習運算符應注意:(1)運算符功能(2)與運算量關(guān)系
要求運算量個數(shù)
要求運算量類型(3)運算符優(yōu)先級別(4)結(jié)合方向(5)結(jié)果的類型單目運算符(-(負))雙目運算符(+(加)、-(減)、*(乘)、/(除)、%(模,求余)優(yōu)先級為:負號級別最高,其次為*/%,再就是+-。要求:操作數(shù)為數(shù)值型數(shù)據(jù)其中%要求為整型/與%的第二操作數(shù)不為0特別注意“/”,當分子分母都是整數(shù)是做整除!1、普通算術(shù)運算符一、算術(shù)運算符和算術(shù)表達式2、增1和減1運算符增量操作表示加1,減量操作表示減1。如:inta=4;
a++;//等效于a=a+1;++a;//等效于a=a+1;a--;//等效于a=a-1;--a;//等效于a=a-1;增量操作符有前增量與后增量之分。前增量操作++a的意義為:先修改操作數(shù)的值再將增1后的a值作為表達式的值。而后增量操作a++的意義為:先將a的值作為表達式的值確定下來,再將a增1。如:
inta=3;
intb=++a;
intc=a++;近水樓臺先得月4a值表達式值a值表達式值++aa++345444則:a:5,b:4,c:4。相應的,有--a和a--。增量和減量操作符都是單目操作符。
#include<iostream.h>voidmain(){
inta=12,b=34;
cout<<a++<<""<<++b<<"";
cout<<b++<<""<<++a<<endl;}思考題
1.自增運算符(++)和自減運算符(--)只能用于變量,而不能用于常量或表達式。
2.++和--的結(jié)合方向是“自右至左”,如:-i++相當于-(i++)3.自增運算符(++)和自減運算符(--)使用十分靈活,但在很多情況下可能出現(xiàn)歧義性,產(chǎn)生“意想不到”的副作用。注意:1.賦值表達式(1)格式:變量賦值運算符表達式a=5左值:賦值運算符左側(cè)的標識符注:表達式a+b和常變量不能作為左值變量可以作為左值,賦值表達式可作左值右值:出現(xiàn)在賦值運算符右側(cè)的表達式賦值表達式中的“表達式”,又可以是一個賦值表達式。a=(b=5)整個表達式的結(jié)果為右邊的表達式值二、賦值運算符和賦值表達式intx(1),y(3),z(5);x+=y*=z-=2;(10,9,3)(2,7,11)z=(x*=2)+(y+=4)+2;//從右向左結(jié)合思考在C++中,將算術(shù)運算符、位運算符同賦值運算符結(jié)合可形成復合賦值運算符。一共有十種:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。如:
a+=b等效于a=a+b注意:運算時右邊的表達式是被作為一個整體參與運算的。如:
a*=3+b等效于a=a*(3+b)
而不是等效于a=a*3+b2復合賦值表達式三、關(guān)系運算符和邏輯運算符說明:它們的運算結(jié)果都是bool類型的值,以數(shù)值1代表"真",以0代表"假"。1.關(guān)系運算符與關(guān)系表達式
>,<,>=,<=
==,!=優(yōu)先級相同(高)優(yōu)先級相同(低)2.關(guān)系表達式
用關(guān)系運算符將兩個表達式連接起來的式子。其結(jié)果值為1(代表邏輯真)或0(代表邏輯假)。兩個操作數(shù)為同一類型x<y5+3>6-2-3<-2<-1a<=b==c<d2.邏輯運算符與邏輯表達式(1)!(邏輯非)&&(邏輯與)||(邏輯或)
高→低ab!aa&&ba||b真真假真真真假假假真假真真假真假假真假假.邏輯表達式用邏輯運算符將兩個關(guān)系表達式連接起來式子
邏輯表達式中的操作數(shù)是作為邏輯量,但C++并不專門提供邏輯類型,只用1與0來代表邏輯結(jié)果真與假。對于參與邏輯運算的操作數(shù),其值為0代表邏輯假,為非0時代表邏輯真。inta(3),b(0);!a&&a+b&&a++;a||b||b++(p&&(q&&!q))||!(r||(s||!s))3.短路求值(1)定義:所謂短路求值是指當使用邏輯與(&&)和邏輯或(||)運算符進行表達式求值時,總是先計算其左操作數(shù),然后再計算其右操作數(shù)。只有在僅靠左操作數(shù)的值無法確定整個邏輯表達式的值時,才會計算其右操作數(shù)。expr1&&expr2expr1||expr2(1)2<5&&5<8(2)!(3<=6)(3)!(2<4)||(3<7)(4)!(5<=7)&&(4<=9)思考題四、位運算符1.按位與(&)
按位與運算符的作用是將兩個操作數(shù)對應的每一位進行邏輯與操作。2.按位或(|)
按位與運算符的作用是將兩個操作數(shù)對應的每一位進行邏輯或操作。3.按位異或(^)按位與運算符的作用是將兩個操作數(shù)對應的每一位進行邏輯異或操作,運算規(guī)則是:若對應的位相同,結(jié)果為0,對應的位不同,結(jié)果為1。4.按位求反(~)按位求反運算符是一個一元運算符,作用操作數(shù)的每一位求反。
3:00000011
|6:00000110 00000111(7)
3:00000011
&6:00000110 00000010(2)
3:00000011
^6:0000011000000101(5)~3:0000001111111100(-4)1.按位與(&)2.按位或(|)3.按位異或(^)4.按位求反(~)5.移位(<<、>>)
移位運算符有兩個,都是二元運算符,它們是:<<(左移運算)和>>(右移運算)。五、其它運算符1.逗號運算符和逗號表達式(1)格式:表達式1,表達式2(2)求解過程:先求解表達式1,再求解表達式2.整個逗號表達式的結(jié)果為表達式2的值如a的初值為0,則表達式x=(a+1,a+2,a+3,a+4,a+5)的值為5如a的初值為0,則表達式x=(a+=1,a+=2,a+=3,a+=4,a+=5)的值為15第一次上機總結(jié)1.容易寫出中文的引號,分號。錯誤提示:errorC2018:unknowncharacter"0xa3“2.變量命名時出現(xiàn)中文和空格,不能慣用數(shù)學的命名方式。注意:標識符是由大小寫字母、數(shù)字、下劃線組成,并且以字母或下劃線開始。3.變量未定義就使用。4.關(guān)鍵詞拼寫有誤,如:mian,count等5.同時打開兩個文件運行。2.條件運算符和條件表達式(1)格式:表達式1?表達式2:表達式3(2)求解過程:先求解表達式1的值,并進行判斷。如果值非零(真)則求解表達式2,此時表達式2的值為整個條件表達式的結(jié)果;如果值為零(假),則求解表達式3,此時表達式3的值為整個條件表達式的結(jié)果。a<b?a:bmax=i>j?i:j;x?′a′∶′b′若x=0,則條件表達式的值為字符′b′的ASCII碼。若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值為3.sizeof運算符(1)作用:sizeof運算符的作用返回其后類型名或表達式在內(nèi)存中所占的字節(jié)數(shù)。(2)格式:
sizeof(類型名)
或
sizeof(表達式)2.7表達式書寫規(guī)則(1)乘號不能省略。(2)括號必須成對出現(xiàn),均使用圓括號;可以出現(xiàn)多個,但要配對;(3)表達式從左到右要在同一基準上,無高低之分。2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)村能源利用與可持續(xù)發(fā)展方案
- 建筑工程中介服務(wù)合同
- 環(huán)保技術(shù)研發(fā)投入趨勢表
- 上季度收入與支出統(tǒng)計表
- 天水藝術(shù)景觀施工方案
- 道路欄桿施工方案
- 現(xiàn)澆混凝土屋面板施工方案
- 陽泉固定抗震支架施工方案
- 哪些工程需要施工方案
- 發(fā)電洞二次襯砌施工方案
- 房屋修繕工程技術(shù)規(guī)程 DG-TJ08-207-2008
- 家庭教育的發(fā)展與變革
- 霹靂布袋戲簡介
- 現(xiàn)代企業(yè)車間管理全套教學課件
- 焊接基礎(chǔ)知識:焊接的缺陷及檢驗方法
- 加油站節(jié)前安全教育培訓
- 信訪調(diào)解協(xié)議書模板
- 生產(chǎn)工藝的標準化流程與規(guī)范化管理
- 干部履歷表(中共中央組織部2015年制)
- 鐵路轉(zhuǎn)轍機 ZDJ9型電動轉(zhuǎn)轍機認知
- 【我國新能源汽車產(chǎn)業(yè)發(fā)展分析文獻綜述5800字】
評論
0/150
提交評論