數(shù)據(jù)類型和輸入輸出_第1頁
數(shù)據(jù)類型和輸入輸出_第2頁
數(shù)據(jù)類型和輸入輸出_第3頁
數(shù)據(jù)類型和輸入輸出_第4頁
數(shù)據(jù)類型和輸入輸出_第5頁
已閱讀5頁,還剩124頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)類型和輸入輸出第1頁,共129頁,2023年,2月20日,星期六3.1C程序的組成//3_1.cpp#include<iostream>usingnamespacestd;intmain(){cout<<"Hello!\n";cout<<"Welcometoc++!\n";}運行結(jié)果:Hello!Welcometoc++!第2頁,共129頁,2023年,2月20日,星期六C程序的組成有1個main函數(shù),是應(yīng)用程序的入口,程序從main函數(shù)的第一行開始運行程序的后綴名是.c或者.cppmain函數(shù)可以調(diào)用其他函數(shù),包括:自己寫的函數(shù)標(biāo)準(zhǔn)語言的庫函數(shù),要包含對應(yīng)的定義文件(.h)編譯環(huán)境提供的庫函數(shù),要包含對應(yīng)的定義文件(.h)3.1C程序的組成第3頁,共129頁,2023年,2月20日,星期六

所有的語言系統(tǒng)都是由字符集和規(guī)則集組成的

“字符”是語言的不可分解的最基本語法單位

由字符可以組成“詞”,由詞組成“表達式”、“句子”,又由各種句子構(gòu)成“函數(shù)”、“程序”3.2標(biāo)識符第4頁,共129頁,2023年,2月20日,星期六C++語言的字符集是ASCII碼的子集,有:26個小寫字母: abcdefghijklmnopqrstuvwxyz26個大寫字母: ABCDEFGHIJKLMNOPQRSTUVWXYZ10個數(shù)字: 0123456789其他符號: 空格!″#%&′()*+-/:;<=>?[\]^_{|}~.3.2標(biāo)識符第5頁,共129頁,2023年,2月20日,星期六

單詞是語言中有意義的最小語法單位。根據(jù)形成規(guī)則,一個單詞由一個或多個字符組成。3.2標(biāo)識符第6頁,共129頁,2023年,2月20日,星期六1.關(guān)鍵字

又稱保留字關(guān)鍵字是系統(tǒng)預(yù)定義的單詞。C++不允許對關(guān)鍵字重定義。3.2標(biāo)識符C++常用的關(guān)鍵字:autobreakcasecharclassconstcontinuedefaultdeleteelseenumexplicitexternfloatforfriendgotoifinlineintlongnewoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchthistypedefunionunsignedvirtualvoidwhile第7頁,共129頁,2023年,2月20日,星期六2.標(biāo)識符(Identifier)

由程序員定義的命名符

3.2標(biāo)識符語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串注意:breakmainint等不能用于命名程序中的自定義函數(shù)、變量、常量(1)不能使用關(guān)鍵字作用戶標(biāo)識符;(2)C++中,字母大小寫敏感;(3)標(biāo)識符盡可能做到見文知義。Aa和aa是兩個不同的標(biāo)識符第8頁,共129頁,2023年,2月20日,星期六2.標(biāo)識符

由程序員定義的命名符

3.2標(biāo)識符語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串例判斷以下標(biāo)識符的正確性:合法標(biāo)識符有: ax1no_1_a2csumNamename不合法標(biāo)識符有: 2ax+y

a,ba&bconst第9頁,共129頁,2023年,2月20日,星期六3.2標(biāo)識符例判斷以下標(biāo)識符的正確性:合法標(biāo)識符有: ax1no_1_a2csumName

name不合法標(biāo)識符有: 2ax+y

a,ba&bconst它們是不同的標(biāo)識符2.標(biāo)識符

由程序員定義的命名符

語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串第10頁,共129頁,2023年,2月20日,星期六3.2標(biāo)識符例判斷以下標(biāo)識符的正確性:以數(shù)字開頭合法標(biāo)識符有: ax1no_1_a2csumNamename不合法標(biāo)識符有: 2ax+y

a,ba&bconst2.標(biāo)識符

由程序員定義的命名符

語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串第11頁,共129頁,2023年,2月20日,星期六3.2標(biāo)識符例判斷以下標(biāo)識符的正確性:合法標(biāo)識符有: ax1no_1_a2csumNamename不合法標(biāo)識符有: 2ax+y

a,b

a&bconst非法符號2.標(biāo)識符

由程序員定義的命名符

語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串第12頁,共129頁,2023年,2月20日,星期六3.2標(biāo)識符例判斷以下標(biāo)識符的正確性:關(guān)鍵字合法標(biāo)識符有: ax1no_1_a2csumNamename不合法標(biāo)識符有: 2ax+y

a,ba&bconst

2.標(biāo)識符

由程序員定義的命名符

語法:以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串第13頁,共129頁,2023年,2月20日,星期六3.運算符

運算符是對數(shù)據(jù)進行操作的簡潔表達,以單詞的形式調(diào)用系統(tǒng)預(yù)定義函數(shù)3.2標(biāo)識符例如:

+加 -減 *乘 /除

>大于 <小于 >=大于或等于

==等于 !=不等于 <=小于或等于第14頁,共129頁,2023年,2月20日,星期六4.分隔符

用于在程序分隔不同的語法單位,便于編譯系統(tǒng)的識別3.2標(biāo)識符常用的分隔符有:空格,逗號,分號,冒號,括號,注釋符等,有些單詞,例如運算符,也起到分隔符的作用例如: inta,b,c; a=b+c;必須用空格作分隔符第15頁,共129頁,2023年,2月20日,星期六3.2標(biāo)識符例如: inta,b,c; a=b+c;運算符也用作分隔符4.分隔符

用于在程序分隔不同的語法單位,便于編譯系統(tǒng)的識別常用的分隔符有:空格,逗號,分號,冒號,括號,注釋符等,有些單詞,例如運算符,也起到分隔符的作用第16頁,共129頁,2023年,2月20日,星期六5.常數(shù)常數(shù)由數(shù)據(jù)的書寫形式定義它的類型和值基本類型常數(shù)在程序運行時直接參與運算,不占用內(nèi)存存儲例如: 5003.141590.263e-10'N'3.2標(biāo)識符第17頁,共129頁,2023年,2月20日,星期六例如:

5003.141590.263e-10'N'整數(shù)3.2標(biāo)識符5.常數(shù)常數(shù)由數(shù)據(jù)的書寫形式定義它的類型和值基本類型常數(shù)在程序運行時直接參與運算,不占用內(nèi)存存儲第18頁,共129頁,2023年,2月20日,星期六例如: 5003.141590.263e-10

'N'浮點數(shù)3.2標(biāo)識符5.常數(shù)常數(shù)由數(shù)據(jù)的書寫形式定義它的類型和值基本類型常數(shù)在程序運行時直接參與運算,不占用內(nèi)存存儲第19頁,共129頁,2023年,2月20日,星期六例如: 5003.141590.263e-10'N'字符3.2標(biāo)識符5.常數(shù)常數(shù)由數(shù)據(jù)的書寫形式定義它的類型和值基本類型常數(shù)在程序運行時直接參與運算,不占用內(nèi)存存儲第20頁,共129頁,2023年,2月20日,星期六類型相同的數(shù)據(jù)有相同的表示形式、存儲格式以及相關(guān)的操作

程序中使用的所有數(shù)據(jù)都必定屬于某一種數(shù)據(jù)類型3.3數(shù)據(jù)類型第21頁,共129頁,2023年,2月20日,星期六3.3.1C++的數(shù)據(jù)類型 整型(int) 浮點型(float,double)基本類型 字符型(char) 空類型(void) 用戶定義類型枚舉類型(enum)

數(shù)據(jù)類型 數(shù)組([]) 結(jié)構(gòu)(struct) 聯(lián)合(union) 類(class) 指針類型(*)簡單類型結(jié)構(gòu)類型第22頁,共129頁,2023年,2月20日,星期六3.3.2數(shù)據(jù)存儲::一個二進制位(bit)存儲陣列只能是“0”或者“1”第23頁,共129頁,2023年,2月20日,星期六::8位一個字節(jié)(byte)存儲陣列3.3.2數(shù)據(jù)存儲可以表示數(shù)字0~255表示一個字符(英文字母、數(shù)字、符號)ACSII碼第24頁,共129頁,2023年,2月20日,星期六::16位一個字(word)存儲陣列3.3.2數(shù)據(jù)存儲兩個字節(jié)(字)保存一個寬字符,UNICODE編碼第25頁,共129頁,2023年,2月20日,星期六b,B,KB,MB,GB,TBTerabyte(TB),中文叫法:TGigabyte(GB),中文叫法:GMegabyte(MB),中文叫法:兆Kilobyte(KB),中文叫法:KByte,中文叫法:字節(jié)bit,中文叫法:位1TB==

1,024GB1GB

==

1,024MB1MB

==

1,024KB1KB

==

1,024B1B==

8b第26頁,共129頁,2023年,2月20日,星期六3.3.3基本類型int整數(shù),在目前絕大多數(shù)機器上占4個字節(jié)所占字節(jié)數(shù)取決于機器字長float單精度浮點數(shù),一般是4個字節(jié)長double雙精度浮點數(shù),一般是8個字節(jié)長char字符,一般是1個字節(jié)長用來表示256個ASCII字符,或者0~255的整數(shù)第27頁,共129頁,2023年,2月20日,星期六shortshortint,短整數(shù),2個字節(jié)長,簡稱shortlonglongint,長整數(shù),4個字節(jié)長,簡稱longlongdouble,高精度浮點數(shù),一般是10個字節(jié)長。signed用來修飾char、int、short和long,說明他們是有符號的整數(shù)(正整數(shù)、0和負整數(shù))。一般缺省都是有符號的,所以這個修飾符通常省略unsigned用來修飾char、int、short和long,說明他們是無符號的整數(shù)(正整數(shù)和0)數(shù)據(jù)類型修飾符在定義變量時,計算機根據(jù)變量的類型分配存儲空間,并且以該類型解釋存放的數(shù)據(jù)第28頁,共129頁,2023年,2月20日,星期六數(shù)據(jù)類型的取值范圍第29頁,共129頁,2023年,2月20日,星期六超出取值范圍會怎樣?(overflow)小蛇能吞下大象嗎?shortint的范圍是-32767~32767如果我們給它一個小于-32767或者大于32767的數(shù)會如何呢?現(xiàn)場編程測驗……第30頁,共129頁,2023年,2月20日,星期六#include<iostream.h>voidmain(){ shortintsi_Exceed=40000; shortintsi_normal=10000; if(si_Exceed>si_normal) cout<<"40000isbiggerthan10000\n"; else cout<<"40000issmallerthan10000\n";}運行結(jié)果會是什么?第31頁,共129頁,2023年,2月20日,星期六溢出所帶來的問題一臺安裝了Windows95/98的機器,如果連續(xù)運行49.7天沒有重新啟動,可能死機原因:Windows自啟動時刻起,有一個計數(shù)器,記錄系統(tǒng)已經(jīng)運行了多少毫秒。這個計數(shù)器是個unsigned

long類型的變量unsigned

long的最大值是:4294967295一天有24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805……當(dāng)49.7天的時候,此計數(shù)器會溢出,引起死機第32頁,共129頁,2023年,2月20日,星期六1.整型,有8進制、10進制和16進制3種進制

以數(shù)字“0”開始的整型常數(shù)是八進制數(shù)010和10大小不一樣因為八進制并不常用,所以此種表示法比較少見,因而常被用錯以“0x”或者“0X”開始的整型常數(shù)是十六進制A~F和a~f用來表示十進制的10~150x11,0x05,0xFA,0xFF十六進制的形式比較常用,可以很方便地轉(zhuǎn)換為二進制第33頁,共129頁,2023年,2月20日,星期六補充知識(僅供了解)原碼:增加了一位符號位(即最高位為符號位),該位為0表示正數(shù),該位為1表示負數(shù),其余位表示數(shù)值的大小反碼:正數(shù)的反碼與其原碼相同;負數(shù)的反碼是對其原碼逐位取反,但符號位除外補碼:正數(shù)的補碼與其原碼相同;負數(shù)的補碼是在其反碼的末位加11.整型,有8進制、10進制和16進制3種進制

第34頁,共129頁,2023年,2月20日,星期六1.整型,有8進制、10進制和16進制3種進制

補充知識(僅供了解):3和-2原碼表示?反碼表示?補碼表示?數(shù)值在計算機中是用補碼來存儲的第35頁,共129頁,2023年,2月20日,星期六

float 4字節(jié) 單精度浮點型 double 8字節(jié) 雙精度浮點型longdouble 16字節(jié) 長雙精度浮點型2.浮點型

第36頁,共129頁,2023年,2月20日,星期六小數(shù)表示法[+|-]Digits.Digits[F|f|L|l]2.浮點型有小數(shù)表示法和指數(shù)表示法兩種形式

指數(shù)表示法[+|-]Digits.Digits[指數(shù)][F|f|L|l](e|E)[+|-]Digits第37頁,共129頁,2023年,2月20日,星期六

3.23E100.23E-445.e+23-23.68E12 3.23E10F0.23E-4f45.e+23L-23.68E12L指數(shù)計數(shù)法例子:第38頁,共129頁,2023年,2月20日,星期六x=s*(1+m)*2^e尾數(shù),在0-1之間指數(shù),也稱為階碼符號位浮點數(shù)在計算機中的存儲方式(IEEE754)如果用4個字節(jié)(一個字節(jié)表示階碼,3個字節(jié)表示尾數(shù))來表示浮點數(shù),則在計算機的存儲方式為:浮點數(shù)的存儲方式(僅供了解,以后會學(xué)):第39頁,共129頁,2023年,2月20日,星期六浮點數(shù)的存儲方式(僅供了解,以后會學(xué)):浮點數(shù)實際存儲時,為了表示最大值和最小值,指數(shù)使用了偏移量(float是127,double=1023):存儲e=實際e+127實際e=存儲e-127深入了解參見:IEEE-754百度百科浮點數(shù)計算器:浮點數(shù)計算器浮點數(shù)計算器:浮點數(shù)計算器第40頁,共129頁,2023年,2月20日,星期六浮點數(shù)的陷阱#include<iostream.h>voidmain(){

floatf; f=123.456;

if(f==123.456) cout<<"fisequalto123.456indeed.";

else cout<<“Infact,fisnotequalto\t"<<f;}運行結(jié)果會是什么?第41頁,共129頁,2023年,2月20日,星期六float的精度低,較易發(fā)生精度帶來的相等性判斷問題double精度高,這個問題發(fā)生的概率小一些,但也存在解決辦法:

if(fabs(f–123.456)<1E-5)

……根據(jù)精度要求設(shè)定第42頁,共129頁,2023年,2月20日,星期六字符一般用ASCII編碼。C++的字符型與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運算3.字符型表示方式'character'字符,或八進制、十六進制值的轉(zhuǎn)義符字符char:單引號括起來的一個字母第43頁,共129頁,2023年,2月20日,星期六3.字符型轉(zhuǎn)義字符

\escape_character以"\"為前綴,表示改變后面escape_character符號或整數(shù)值的意義,使其成為控制符或字符值。一些特殊字符(無法從鍵盤輸入或者在C語言里有它用)用轉(zhuǎn)義字符表示轉(zhuǎn)義的思想在網(wǎng)絡(luò)協(xié)議和文件格式中常用第44頁,共129頁,2023年,2月20日,星期六3.字符型C++常用轉(zhuǎn)義字符名稱字符形式值空字符(Null)\00X00換行(NewLine)\n0X0A換頁(FormFeed)\f0X0C回車(CarriageReturn)\r0X0D退格(BackSpasc)\b0X08響鈴(Bell)\a0X07水平制表(HorizontalTab)\t0X09垂直制表(VerticalTab)\v0X0B反斜杠(backslash)\\0X5C問號(questionmark)\?0X3F單引號(singlequote)\′0X27雙引號(doublequote)\〞0X22第45頁,共129頁,2023年,2月20日,星期六3.字符型#include<iostream.h>voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}例轉(zhuǎn)義字符示例響鈴,等價于\a橫向跳一制表符換行第46頁,共129頁,2023年,2月20日,星期六取值范圍:true:真flase:假C中表示方法:0為假,非0真4.布爾型(bool)第47頁,共129頁,2023年,2月20日,星期六字符串并不是C的基本數(shù)據(jù)類型。字符串常量是包含在””中的字符序列,以數(shù)據(jù)形式存放;存放時,自動在字符串尾部添加一個空字符‘\0’作為結(jié)束符。注意”A”和’A’的差別在string.h中定義一系列處理字符串的函數(shù),在第5章講解5.字符串第48頁,共129頁,2023年,2月20日,星期六空值類型表示沒有、無效和含義和NULL(空)區(qū)分開發(fā):NULL表示不知道是什么的含義6.空值類型(void)第49頁,共129頁,2023年,2月20日,星期六3.4變量和常量程序使用內(nèi)存空間需要申請,申請的方式是通過在程序中定義常量和變量來進行的既能讀又能寫的內(nèi)存對象,稱為變量;若一旦初始化后不能更改的對象則稱為常量。第50頁,共129頁,2023年,2月20日,星期六3.4.1變量定義已定義類型變量是存儲單元變量定義:申請指定類型的存儲空間,并以指定標(biāo)識符命名變量定義形式:類型標(biāo)識符,標(biāo)識符,…,標(biāo)識符;標(biāo)識符表第51頁,共129頁,2023年,2月20日,星期六3.4.1變量定義變量定義例子:intx;intwordCut,Radius,Height;doubleFlightTime,Mileage,Speed;

變量定義同時可以賦初始值類型標(biāo)識符=常量,標(biāo)識符=常量,…,標(biāo)識符=常量;第52頁,共129頁,2023年,2月20日,星期六3.4.2訪問變量內(nèi)存單元由操作系統(tǒng)按字節(jié)編號,稱為地址。一個變量占有內(nèi)存的第一個字節(jié)的地址稱為對象的地址可以通過變量名或地址訪問變量的值第53頁,共129頁,2023年,2月20日,星期六3.4.2訪問變量inta0X0066FDF4doubleb0X0066FDEC例如,有說明: inta; doubleb;內(nèi)存分配變量a的地址變量b的地址第54頁,共129頁,2023年,2月20日,星期六1.名訪問

對于變量,名訪問就是訪問變量的內(nèi)容訪問形式分為“讀”和“寫”例如:inta,b;a=10;b=20;a=a+b;第55頁,共129頁,2023年,2月20日,星期六1.名訪問對于數(shù)據(jù)單元,名訪問就是操作對象的內(nèi)容訪問形式分為“讀”和“寫”例如:inta,b;a=10;b=20;a=a+b;intaintb建立內(nèi)存對象第56頁,共129頁,2023年,2月20日,星期六例如:inta,b;a=10;b=20;a=a+b;1.名訪問對于數(shù)據(jù)單元,名訪問就是操作對象的內(nèi)容訪問形式分為“讀”和“寫”寫操作intaintb1010第57頁,共129頁,2023年,2月20日,星期六1.名訪問對于數(shù)據(jù)單元,名訪問就是操作對象的內(nèi)容訪問形式分為“讀”和“寫”例如:inta,b;a=10;b=20;a=a+b;寫操作intaintb102020第58頁,共129頁,2023年,2月20日,星期六1.名訪問對于數(shù)據(jù)單元,名訪問就是操作對象的內(nèi)容訪問形式分為“讀”和“寫”例如:inta,b;a=10;b=20;a=a+b;

讀操作intaintb1020+2010第59頁,共129頁,2023年,2月20日,星期六1.名訪問對于數(shù)據(jù)單元,名訪問就是操作對象的內(nèi)容訪問形式分為“讀”和“寫”例如:inta,b;a=10;b=20;a=a+b;

寫操作intaintb1020+201030第60頁,共129頁,2023年,2月20日,星期六2.地址訪問程序被編譯后,系統(tǒng)對已聲明對象保存一張名表,登記對象的屬性<名字,類型,地址>C++允許通過名或地址(并根據(jù)類型)訪問對象

例如,有說明: doubleb;<b,double,0X0066FDEC>名字b所標(biāo)識的浮點型對象第61頁,共129頁,2023年,2月20日,星期六2.地址訪問程序被編譯后,系統(tǒng)對已聲明對象保存一張名表,登記對象的屬性<名字,類型,地址>C++允許通過名或地址(并根據(jù)類型)訪問對象

例如,有說明: doubleb;<b,double,0X0066FDEC>地址0X0066FDEC所指的浮點型對象第62頁,共129頁,2023年,2月20日,星期六2.地址訪問

程序被編譯后,系統(tǒng)對已聲明對象保存一張名表,登記對象的屬性<名字,類型,地址>

C++允許通過名或地址(并根據(jù)類型)訪問對象

例如,有說明: doubleb;<a,int,0X0066FDF4>inta;<b,double,0X0066FDEC>名字a所標(biāo)識的整型對象第63頁,共129頁,2023年,2月20日,星期六2.地址訪問

程序被編譯后,系統(tǒng)對已聲明對象保存一張名表,登記對象的屬性<名字,類型,地址>C++允許通過名或地址(并根據(jù)類型)訪問對象

例如,有說明: doubleb;<a,int,0X0066FDF4>inta;<b,double,0X0066FDEC>地址0X0066FDF4所指的整型對象第64頁,共129頁,2023年,2月20日,星期六2.地址訪問

程序被編譯后,系統(tǒng)對已聲明對象保存一張名表,登記對象的屬性<名字,類型,地址>C++允許通過名或地址(并根據(jù)類型)訪問對象

例如,有說明:doubleb;<b,double,0X0066FDEC>取對象b的地址:

&b訪問對象b:

*(&b)

取址運算符間址運算符<b,double,0X0066FDEC>取對象b的地址:

&b訪問對象b:

*(&b)

第65頁,共129頁,2023年,2月20日,星期六2.地址訪問例測試對變量、常量的不同訪問形式#include<iostream.h>voidmain(){inta=451;constintMAX=1000;cout<<a<<endl; cout<<(&a)<<endl;cout<<*(&a)<<endl;

cout<<&MAX<<endl;cout<<MAX<<endl;cout<<*(&MAX)<<endl;}第66頁,共129頁,2023年,2月20日,星期六定義形式:

類型&引用名=變量名;3.4.2引用

引用說明為變量建立引用名,即別名,并不分配存儲空間

引用在定義初始化時與變量名綁定,程序中不能對引用重定義

一個變量的別名,從使用方式和效果上,與使用變量名一致4.引用引用說明符第67頁,共129頁,2023年,2月20日,星期六3.4.2引用//引用inta;int&ra=a;

ra是a的別名只能在定義時初始化第68頁,共129頁,2023年,2月20日,星期六3.4.2引用//例引用測試#include<iostream.h>voidmain(){inta=2345;int&ra=a;cout<<a<<'\t'<<ra<<'\t'<<endl;}第69頁,共129頁,2023年,2月20日,星期六3.4.3常量和約束訪問關(guān)鍵字const約束對象的訪問性質(zhì),使對象值只能讀,不能寫,即不允許修改對象的值第70頁,共129頁,2023年,2月20日,星期六標(biāo)識常量對常數(shù)加以命名,常量名是存儲常量值的內(nèi)存單元的名字,以后使用常量名(標(biāo)識符)標(biāo)識常數(shù)。程序中以只讀形式訪問標(biāo)識常量1.標(biāo)識常量第71頁,共129頁,2023年,2月20日,星期六定義形式:const類型常量標(biāo)識符=常量值;直接常量或簡單表達式

例如,以下是正確的常量定義: constfloatPI=3.14159; constintMIN=50; constintMAX=2*MIN;1.標(biāo)識常量

第72頁,共129頁,2023年,2月20日,星期六 const

類型

&

引用名=變量名;2.常引用例如:inta=314;constint&ra=a; //ra是a的常引用//ra=618;

//錯誤,不能通過常引用對對象a執(zhí)行寫操作a=618; //正確約束對象用別名訪問時為只讀訪問第73頁,共129頁,2023年,2月20日,星期六3.5表達式表達式是由數(shù)據(jù)(操作數(shù))和運算符,按求值規(guī)則,表達一個值的式子。表達式可以分為:算術(shù)表達式、邏輯表達式、賦值表達式、條件表達式、逗號表達式。第74頁,共129頁,2023年,2月20日,星期六運算符是以簡潔的方式表達對數(shù)據(jù)操作的符號算術(shù)運算符+-*/%++--關(guān)系運算符><==>=<=!=邏輯運算符!&&||位運算符<<>>~|^&

賦值運算符=及擴展的復(fù)合運算符條件運算符?:逗號運算符,指針運算符*&求字節(jié)運算符sizeof強制類型轉(zhuǎn)換符類型分量運算符.->下標(biāo)運算符[]其他()::newdelete3.5.1運算符

第75頁,共129頁,2023年,2月20日,星期六單目運算符運算符右操作數(shù)例如: -123 +500雙目運算符左操作數(shù)運算符右操作數(shù)例如: a*3 x>y三目運算符條件運算:操作數(shù)1?操作數(shù)2:操作數(shù)3例如: a?b:c3.5.1運算符按照操作數(shù)的個數(shù)分類

第76頁,共129頁,2023年,2月20日,星期六算術(shù)運算符+,-,*,/加、減、乘、除運算四則混合運算中,先算乘除,后算加減,

先算左,后算右%求余運算Sizeof求數(shù)據(jù)或數(shù)據(jù)類型占用的存儲空間字節(jié)數(shù)第77頁,共129頁,2023年,2月20日,星期六算術(shù)運算符兩個整數(shù)相除的結(jié)果為整數(shù)整數(shù)運算溢出的問題unsignedshortinti=1000*100;cout<<i<<"\n";輸出不是100000,而是34464,因為shortint能表示的最大范圍是655365/3 結(jié)果是14/5 結(jié)果是0-11/2 結(jié)果根據(jù)由編譯器選擇,可為-5或者-6第78頁,共129頁,2023年,2月20日,星期六自增和自減i++,i--,++i,--i

++讓參與運算的變量加1,--讓參與運算的變量減1運算符為后綴,先取i的值,然后加/減1運算符為前綴,先加/減1,然后取i的值第79頁,共129頁,2023年,2月20日,星期六自增和自減自增操作符和自減操作符只能用于整型、字符型變量,不能用于常量和表達式.自增式和自減式作為獨立的表達式,前綴式和后綴式?jīng)]有區(qū)別說明:并不推薦使用,特別是自增和自減出現(xiàn)在表達式中例:

5++ ++(a++) (x+y)-- 錯誤第80頁,共129頁,2023年,2月20日,星期六3.5.3賦值表達式賦值表達式的作用是把數(shù)據(jù)值寫入變量,修改對象的值一般形式為: 變量=表達式

賦值操作的操作數(shù)類型不同時,以左操作數(shù)的數(shù)據(jù)類型為準(zhǔn)。(inta=2.156)第81頁,共129頁,2023年,2月20日,星期六賦值運算的優(yōu)先級很低賦值運算的結(jié)果是被賦值變量的值例如 a=b=10; (a=b)=10;

3.5.3賦值表達式第82頁,共129頁,2023年,2月20日,星期六復(fù)合賦值運算雙目算符op的表達式: A=AopB 可以縮寫成: Aop

=Bc=c-kc-=kx=x*(y+8)x*=y+8x=x+3x+=3x=x%3x%=3例:3.5.3賦值表達式第83頁,共129頁,2023年,2月20日,星期六復(fù)合賦值運算+= -= *= /= %=<<= >>= &= = |=C++提供的10個復(fù)合賦值運算符:用于位運算3.5.3賦值表達式雙目算符op的表達式: A=AopB 可以縮寫成: Aop

=B第84頁,共129頁,2023年,2月20日,星期六3.5.4邏輯表達式邏輯表達式用于判斷運算。邏輯表達式的值只有兩個: 表達式成立為true(1) 表達式不成立為false(0)表達式求值過程中,非0值都作為邏輯真。構(gòu)成邏輯表達式的運算符有關(guān)系運算符和邏輯運算符。第85頁,共129頁,2023年,2月20日,星期六關(guān)系運算符>,>=,<,<=,==,!=大于,大于等于,小于,小于等于,等于,不等于關(guān)系運算符運算出的結(jié)果為0和10,表示假,即該關(guān)系不成立1,表示真,即該關(guān)系成立在所有涉及到真假判斷的地方,0表示假,非0表示真第86頁,共129頁,2023年,2月20日,星期六邏輯運算符邏輯運算也被稱為布爾(Boolean)運算,運算結(jié)果也是1和0&&與運算(a>b&&b>c);a大于b,并且b大于c||或運算(a>b||b>c);a大于b,或者b大于c!求反(!a);如果a是0,結(jié)果非0;如果a是非0,結(jié)果是0并不改變a的值第87頁,共129頁,2023年,2月20日,星期六邏輯與邏輯或邏輯非邏輯運算符第88頁,共129頁,2023年,2月20日,星期六邏輯真值表:邏輯運算符第89頁,共129頁,2023年,2月20日,星期六邏輯運算的短路求值:E1&&E2 當(dāng)表達式E1的值為0時,不再對E2求值E1||E2 當(dāng)表達式E1值為非0時,不再對E2求值x=y=0;

x++||y++;X=y=1;x--&&y--;邏輯運算符第90頁,共129頁,2023年,2月20日,星期六3.5.5位運算符按位與(&):全1為1,有0則0運算規(guī)則將兩個操作數(shù)的每一個位進行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其它位不變。例如:

將char型變量a的最低位置

0取指定位。

例如:有charc;inta;

取出a

的低字節(jié),置于

c

中第91頁,共129頁,2023年,2月20日,星期六3.5.5位運算符按位或(|):有1則1,全0為0運算規(guī)則將兩個運算量的每一個位進行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其它位不變。

例如:將int型變量a的低字節(jié)置1:

a=a|0xff;第92頁,共129頁,2023年,2月20日,星期六3.5.5位運算符位運算——按位異或(^)運算規(guī)則兩個操作數(shù)進行異或:

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

若對應(yīng)位不同,則結(jié)果該位為1,舉例:計算071^052071: 00111001052:(^)00101010071^052: 00010011第93頁,共129頁,2023年,2月20日,星期六3.5.5位運算符用途:使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反)例如:要使01111010低四位翻轉(zhuǎn):

01111010(^) 00001111 01110101位運算——按位異或(^)第94頁,共129頁,2023年,2月20日,星期六3.5.5位運算符單目運算符,對一個二進制數(shù)按位取反。例:025:0000000000010101~025:1111111111101010位運算——取反(~)第95頁,共129頁,2023年,2月20日,星期六3.5.5位運算符位運算——移位左移運算(<<)左移后,低位補0,高位舍棄。右移運算(>>)右移后,低位:舍棄

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

有符號數(shù):補“符號位”一起做:15<<2=第96頁,共129頁,2023年,2月20日,星期六3.5.6條件表達式 E1?E2:E3其中 ?:稱為條件運算符,是C++中唯一的三目運算符;

E1、E2、E3為表達式。功能:根據(jù)E1的值,決定計算E2或E3。 若E1的值為真,條件表達式的值為E2的值; 若E1的值為假,條件表達式的值為E3

的值。第97頁,共129頁,2023年,2月20日,星期六//例計算a+|b|的值#include<iostream.h>voidmain(){floata,b;cout<<"Input2realsplease:\n";cin>>a>>b;cout<<a<<"+|"<<b<<"|="<<(b>=0?a+b:a-b)<<endl;}注意添加括號條件運算級別低于插入3.5.6條件表達式第98頁,共129頁,2023年,2月20日,星期六計算a、b之中的大值: max=a>b?a:b求a的符號: sig=a>0?1:(a<0?-1:0)把字母轉(zhuǎn)換成小寫: ch=(ch>='A'&&ch<='Z')?(ch+32):ch

3.5.6條件表達式條件表達式切忌用得過于繁雜第99頁,共129頁,2023年,2月20日,星期六()[]->.!~++--+-*&(類型)sizeof*/%+-<<>><<=>>===!=&^|&&||?:=+=-=*=/=%=&=^=|=<<=>>=,運算符的優(yōu)先級(P18)第100頁,共129頁,2023年,2月20日,星期六以下從高到低排列各類運算的優(yōu)先級單目運算符乘除運算加減運算關(guān)系運算邏輯與邏輯或賦值逗號 i+1<j*4&&!P||Q等價于:

((

(i+1)<(

j*4)

)

&&(!P))

||Q P!=i<j||Q&&S等價于:(

P!=

(

i<j

))

||

(Q&&S

)例如運算符的優(yōu)先級第101頁,共129頁,2023年,2月20日,星期六能背下優(yōu)先級表的人鳳毛麟角腦細胞太寶貴了,不能用來死記硬背用括號來控制運算順序更直觀、方便,并減少出錯的概率先算乘除,后算加減,有括號就先算括號里的括號太多,有時候不清晰注意用空格做好分隔實在不行就拆分表達式運算符的優(yōu)先級第102頁,共129頁,2023年,2月20日,星期六運算符的結(jié)合性(方向)從左到右:先計算左操作數(shù),后計算右操作數(shù)從右到左先計算右操作數(shù),后計算左操作數(shù)例子:(a+b)+(c+d)先計算那個,后計算那個?第103頁,共129頁,2023年,2月20日,星期六3.6類型轉(zhuǎn)換(1)運算符的操作數(shù)類型相同時,運算結(jié)果也是相同類型(10/6)(2)當(dāng)運算符的操作數(shù)數(shù)據(jù)類型不同時,存在隱式類型轉(zhuǎn)換.(10/6.0)。轉(zhuǎn)換規(guī)則是將類型較低(存儲要求低)的數(shù)據(jù)類型轉(zhuǎn)換為類型較高的類型,然后計算結(jié)果。(3)賦值操作的操作數(shù)類型不同時,以左操作數(shù)的數(shù)據(jù)類型為準(zhǔn)。(inta=2.156)第104頁,共129頁,2023年,2月20日,星期六floatTemp=23.3;doubleVolume=3.2;longdoubleldConstant=6.23E23;cout<<Volume*ldConstant;cout<<Temp/Volume;類型轉(zhuǎn)換doublelongdoublefloatdouble第105頁,共129頁,2023年,2月20日,星期六3.6.2強制類型轉(zhuǎn)換用類型符對表達式值轉(zhuǎn)換成所需類型,一般形式為:

(類型

)(表達式)

類型

(表達式)

(類型)表達式例如:int(x+y) //把x+y的結(jié)果轉(zhuǎn)換成整型(char)70 //把整數(shù)70轉(zhuǎn)換成字符'F'(float)(2/4)

//結(jié)果為0想一想,為什么?第106頁,共129頁,2023年,2月20日,星期六可以通過“(類型)表達式”的方式把表達式的值轉(zhuǎn)為任意類型強轉(zhuǎn)時,你必須知道你在做什么強轉(zhuǎn)與指針,并稱C語言兩大神器,用好了可以呼風(fēng)喚雨,用壞了就損兵折將屠龍

刀倚天劍3.6.2強制類型轉(zhuǎn)換第107頁,共129頁,2023年,2月20日,星期六3.7簡單的輸入輸出

C++的輸入、輸出操作由I/O流庫提供

cin和cout是流庫預(yù)定義的兩個標(biāo)準(zhǔn)對象,分別連接鍵盤和屏幕

它們在頭文件iostream.h中聲明第108頁,共129頁,2023年,2月20日,星期六3.7.1鍵盤輸入

鍵盤輸入的作用是讀取用戶鍵入的字符串,按相應(yīng)變量的類型轉(zhuǎn)換成二進制代碼寫入內(nèi)存

語句格式cin>>變量1>>變量2…>>變量n;標(biāo)準(zhǔn)輸入流對象提取運算符已聲明存儲空間的對象第109頁,共129頁,2023年,2月20日,星期六3.7.1鍵盤輸入

鍵盤輸入的作用是讀取用戶鍵入的字符串,按相應(yīng)變量的類型轉(zhuǎn)換成二進制代碼寫入內(nèi)存

例如inta;chars;cin>>a>>s;intachars35A鍵入:00000000000000000000000000100011格式轉(zhuǎn)換第110頁,共129頁,2023年,2月20日,星期六35A鍵入:3.7.1鍵盤輸入

鍵盤輸入的作用是讀取用戶鍵入的字符串,按相應(yīng)變量的類型轉(zhuǎn)換成二進制代碼寫入內(nèi)存例如inta;chars;cin>>a>>s;intachars00000000000000000000000000100011格式轉(zhuǎn)換01000001第111頁,共129頁,2023年,2月20日,星期六3.7.1鍵盤輸入

鍵盤輸入的作用是讀取用戶鍵入的字符串,按相應(yīng)變量的類型轉(zhuǎn)換成二進制代碼寫入內(nèi)存例如inta,b;cin>>a+b;inta

intb可以嗎? 為什么?第112頁,共129頁,2023年,2月20日,星期六語句格式cout<<表達式1<<表達式2…<<表達式n;3.7.2屏幕輸出

屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上標(biāo)準(zhǔn)輸出流對象插入運算符輸出項第113頁,共129頁,2023年,2月20日,星期六3.7.2屏幕輸出例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;intachars0000000000000000000000000010001101000001屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上第114頁,共129頁,2023年,2月20日,星期六3.7.2屏幕輸出

例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;輸出字符串常量,直接輸出intachars0000000000000000000000000010001101000001屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上第115頁,共129頁,2023年,2月20日,星期六3.7.2屏幕輸出例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;a*2=輸出intachars0000000000000000000000000010001101000001屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上第116頁,共129頁,2023年,2月20日,星期六屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上intachars00000000000000000000000000100011010000013.7.2屏幕輸出

例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;a*2=輸出讀取a的值計算a*2把二進制70轉(zhuǎn)換成字符串“70”顯示a*2格式轉(zhuǎn)換第117頁,共129頁,2023年,2月20日,星期六3.7.2屏幕輸出

例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;a*2=70輸出intachars0000000000000000000000000010001101000001屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上a*2格式轉(zhuǎn)換第118頁,共129頁,2023年,2月20日,星期六intachars00000000000000000000000000100011010000013.7.2屏幕輸出

例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;a*2=70輸出格式控制符換行屏幕輸出的作用從內(nèi)存讀取數(shù)據(jù)項的值,轉(zhuǎn)換成相應(yīng)的字符串顯示到屏幕上第119頁,共129頁,2023年,2月20日,星期六intachars00000000000000000000000000100011010000013.7.2屏幕輸出

例如inta;chars;cin>>a>>s;cout<<"a*2="<<a*2<<endl;cout<<s<<endl;a*2=70|輸出格式控制符換行

溫馨提示

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

評論

0/150

提交評論