




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
主要內容數據類型的概念C++基本數據類型常量與變量操作符表達式數據類型的概念數據類型包含兩個集合:值集:描述了該數據類型包含哪些值(包括這些值的結構);操作(運算)集:描述了對值集中的值能實施哪些運算。例如:整數類型值集:由整數所構成的集合操作集:加、減、乘、除等運算數據類型可以分為:簡單數據類型:值集的數據是不可再分解的簡單數據,如:整數類型、實數類型等;復合數據類型:值集的數據是由其它類型的數據按照一定的方式組合而成,如:向量、矩陣等。數據類型的概念(續)C++數據類型
基本數據類型是C++語言預先定義好的數據類型,又稱為標準數據類型或內置數據類型(built-intypes),簡單數據類型。構造數據類型由用戶利用語言提供的類型構造機制從其它類型構造出來的數據類型,復合數據類型(枚舉類型除外)。--結構類型抽象數據類型 由用戶利用數據抽象機制把數據與相應的操作作為一個整體來描述的數據類型,復合數據類型。--類C++基本數據類型
對應著能由計算機直接表示和處理(機器指令能對它們直接進行操作)的數據類型
整數類型實數類型字符類型邏輯類型空值類型整數類型
int和計算機的字長有關shortint或short2個字節longint或long4個字節unsignedint或unsignedunsignedshortint或unsignedshortunsignedlongint或unsignedlong
“shortint”的范圍≤“int”的范圍≤“longint”的范圍最大正整數比相應的有符號整數類型所表示的最大正整數要大
在計算機內部通常用補碼表示:
正整數的補碼為它的二進制原碼表示;負整數的補碼為把相應正整數的二進制表示中各個二進制位取反后得到的整數加1。整數類型的內部表示實數類型(浮點型)
float(單精度型)4個字節
double(雙精度型)8個字節
longdouble(長雙精度型)8或10個字節“float”的范圍<“double”的范圍≤“longdouble”的范圍優先級:優先級高的先運算i+(int)js=(s&0xF7)//表示把第4位設置為0對unsignedchar,把字符編碼看成正整數。十六進制:'\xhh',如:'\x41'特殊表示,如:‘\n’(換行符)、‘\r’(回車符)、‘\t’(橫向制表符)、‘\b’(退格符)等p20轉義序列,由\打頭的一串符號操作符“/”用于整型操作數時表示整除,小數點后面的數將舍去,并且不進行四舍五入。對相鄰的兩個操作符,按下面規則確定(p36):unsignedint或unsigned變量:在程序執行過程中值可變的數據,如:2*PI*r中的r。1就無法精確地用二進制表示。否則,如果一個操作數類型為longint,則另一個操作數轉換成longint。而字符串常量可以表示多個字符,其類型為常量字符數組。-10/3的結果為-3實數類型的內部表示
在計算機內部,實數表示成:
a×2b,
a:尾數;b:指數在實數的內存空間中存儲的是尾數和指數兩部分,它們均采用二進制表示。有些十進制小數是不能精確表示成二進制小數的。例如,十進制小數0.1就無法精確地用二進制表示。字符類型
charsignedcharunsignedcharwchar_t
字符類型的內部表示字符在計算機中存儲的是它的編碼。C++允許把字符類型的數據(字符的編碼)當作整數類型數值進行算術運算。對signedchar,把字符編碼看成有符號整數,最高位看作符號位。對unsignedchar,把字符編碼看成正整數。
wchar_t
用于漢字這樣的大字符集,適用于國際化程序設計。邏輯類型用于描述“真”和“假”這樣的邏輯值,它們為條件表達式的計算結果,分別表示條件的滿足和不滿足。在C++中,邏輯類型用bool表示,它的值只有兩個:true和false,分別對應“真”和“假”。在C++中又常常把邏輯值看成整數類型值,true對應1、false對應0,邏輯值也可以參加算術運算。空值類型
在C++中提供了一種值集為空的類型:空值型(void),用以表示:沒有返回值的函數的返回類型通用指針類型(void*)
在C++中,常常把各種int型、char型以及bool型統稱為整型(integraltypes);把整型和實數類型統稱為算術類型(arithmetictypes)。整型(integraltypes)和
算術類型(arithmetictypes)sizeof
在不同規格的計算機上,各種數據類型的數據的取值范圍可能不一樣。可以通過“sizeof(類型名)”或“sizeof(變量名)”來計算各種數據類型的數據所占的內存空間大小(字節數)。標準庫的頭文件climits(或limits.h)定義了所有整型的取值范圍,標準庫的頭文件cfloat(或float.h)定義了所有實數類型的取值范圍。typedefC++允許在程序中給已有數據類型取一些別名,格式為:
typedef<已有類型><別名>;例如,下面為類型unsignedint取了一個別名Uint:
typedefunsignedintUint;
typedef并沒有定義新類型。便于程序的閱讀和編寫,并使程序簡明、清晰和易于修改。數據的表示
在程序中,數據以兩種形式存在:常量和變量。常量:在程序執行過程中不變(或不能被改變)的數據,如:圓周率π、一個星期的天數等。變量:在程序執行過程中值可變的數據,如:2*PI*r中的r。常量 C++把常量分為:整數類型、實數類型、字符類型、邏輯類型、字符串類型以及指針類型。
在C++程序中,常量可以用兩種形式表示:字面常量:在程序中通過直接寫出常量值來使用的常量,通常又稱為直接量(literal)。符號常量(命名常量):通過常量定義給常量取一個名字并指定一個類型,在程序中通過常量名來使用這些常量。字面常量(直接量) C++的字面常量有:整數類型常量實數類型常量字符類型常量字符串常量整數類型字面常量
在C++程序中,整數類型常量可以用十進制、八進制或十六進制形式來書寫:十進制形式。由0~9數字組成,第一個數字不能是0(整數0除外),如:59,128,-72為整數類型常量的十進制表示;八進制形式。由數字0打頭,0~7數字組成,如:073,0200,-0110為八進制表示;整數類型字面常量(續)十六進制形式。由0x或0X打頭,0~9數字和A~F(或a~f)字母組成,如:0x3B,0x80,-0x48,為十六進制表示可在整數類型常量的后面加上l或L,表示longint類型的常量,也可在整數類型常量的后面加上u或U,表示unsidnedint類型的常量默認為int型實數類型字面常量
在C++程序中,實數類型常量采用十進制形式書寫(在計算機內部采用二進制存儲)。實數類型常量有兩種表示法:小數表示法和科學表示法。小數表示法:由整數部分、小數點“.”和小數部分構成,如:456.78,-0.0057,5.,.5。科學表示法:在小數表示法后加上一個指數部分,指數部分由E(或e)和一個整數類型數構成,表示基數為10的指數,如:4.5678E2,-5.7e-3等。實數類型字面常量(續)實數類型常量默認為double型。可以在實數類型常量后面加上F(f)以表示float型,如:5.6F。也可在實數類型常量后面加上L(l)表示longdouble型,如5.6L。字符類型字面常量
字符常量是由兩個單引號(')括起來的一個字符構成,其中的字符寫法可以是:字符本身,如:'A'轉義序列,由\打頭的一串符號字符的編碼八進制:'\ddd',如:'\101'十六進制:'\xhh',如:'\x41'特殊表示,如:‘\n’(換行符)、‘\r’(回車符)、‘\t’(橫向制表符)、‘\b’(退格符)等p20字符類型字面常量(續)注意:反斜杠(\)應寫成:'\\'單引號(')應寫成:'\''雙引號(")可寫成:'\"'或'"'字符串類型字面常量
字符串常量是由兩個雙引號(")括起來的字符序列構成,其中的字符的寫法與字符類型常量基本相同,即可以是字符本身和轉義序列。如:
"Thisisastring." "I'mastudent." "Pleaseenter\"Y\"or\"N\":" "Thisistwo-line\nmessage!"字符常量與字符串常量的區別字符常量表示單個字符,其類型為字符類型(char);而字符串常量可以表示多個字符,其類型為常量字符數組。字符常量用單引號表示;而字符串常量用雙引號表示。對字符常量的操作按char類型進行;對字符串常量的操作按字符數組的規定。注意:在存儲字符串時,會在最后一個字符后面加上一個符號‘\0’.即字符串結束符因此,字符常量在內存中占一個字節;字符串常量占多個字節,其字節數為:字符串中的字符個數加上1。'A'"A"AA\0“ef\0\123\\\n89”占多少內存單元?(03秋)9符合C++語法規則的常量是?(02秋)4e0.5‘\87’0X5A“\”3,4符號常量
在程序中使用常量時,除了采用字面常量形式外,還可以首先通過常量定義給常量取一個名字并指定一個類型;然后,在程序中通過常量名來使用這些常量。 符號常量的定義格式為:
const<類型名><常量名>=<值>;或
#define<常量名><值>例如:
constdoublePI=3.1415926;或,
#definePI3.1415926變量
在程序中,其值可以改變的量稱為變量。變量可以用來表示可變的數據。例如:在計算圓周長的表達式2*PI*r中,半徑r就是一個可變的數據,它可能是通過用戶輸入得到,也可能由程序的其它部分計算得到。變量的基本特性變量名:用標識符表示類型:指定變量能取何種值、對其能進行何種運算(操作)以及所需內存空間的大小等。值:在類型的值集范圍內可變內存地址變量的定義與聲明 C++語言規定:程序中使用到的每個變量都要有定義。格式為:
<類型名><變量名>;或者
<類型名><變量名>=<初值>;例如:inta=0;intb=a+1;doublex=0.5;或:inta=0,b=a+1;doublex=0.5;變量的定義與聲明(續)
在C++程序中使用變量之前,必須對使用的變量進行聲明。變量定義屬于一種聲明,稱為定義性聲明。變量聲明的另一種形式為:
extern<類型名><變量名>;變量聲明
變量的定義與聲明(續)變量定義與聲明的區別是:變量定義要給變量分配空間,變量聲明則否。變量定義可以給變量賦初值(對變量進行初始化),變量聲明則否。如:
inta=1,b=2,c=3;//OKexternintd=4;//Error
在整個程序中,一個變量的定義只能有一個,而對該變量的聲明可以有多個。//voidg()//定義{externintx,y;//聲明
intz;//定義
z=x+y;}//intx=0;//定義voidf()//定義{externinty;//聲明
x=y+1;}inty=0;//定義intmain()//定義{externvoidg();//聲明
y=x+2;f();g();return0;}變量值的輸入#include<iostream>//插入一些在標準庫中定義的輸入/輸出操作所需要的聲明usingnamespacestd;//C++標準庫中的程序實體是在名空間std中定義的。inti;doubled;......cin>>i;//從鍵盤輸入一個整數類型數給變量icin>>d;//從鍵盤輸入一個雙精度浮點數給變量d
上述的鍵盤輸入也可以寫在一條語句中:cin>>i>>d;
多個變量值輸入時,用空格、回車、橫向制表符分隔。輸入數據應和變量的類型一致否則按照變量類型來賦值p24例子當從鍵盤上輸入1.5
10時,寫出下面程序的執行結果
#include<iostream.h>
void
mian()
{
int
a,b,c;
char
ch;
cin>>a>>ch>>b>>c;//從鍵盤上輸入1.5
10
cout<<a<<endl<<ch<<endl<<b<<endl<<c;
}1.5ch(10)操作符(運算符)
操作符用于描述對數據的運算。這里的數據稱為操作數,它們可以是:常量、變量、其它操作符的運算結果
通常情況下,操作符所指定的運算不會改變操作數的值(運算結果將保存在臨時的存儲單元中)。 但在C++語言中,有些操作符(如:賦值=、自增++、自減--等操作符)的運算在得到一個運算結果的同時,也會改變操作數的值,稱這些操作符帶有副作用。 有副作用的操作有時會產生不良結果。C++操作符的種類
算術操作符關系與邏輯操作符位操作符賦值操作符其它操作符算術操作符
算術操作符的操作數類型一般為算術類型,有時也可以是枚舉類型和指針類型。取負“-”與取正“+”
加“+”、減“-”、乘“*”、除“/”和取余數“%”
操作符“/”用于整型操作數時表示整除,小數點后面的數將舍去,并且不進行四舍五入。
3/2的結果為1;-10/3的結果為-3取余數“%”操作符用于計算兩個操作數相除的余數,操作數的類型應為整型和枚舉類型。
10%3的結果為1;8%2的結果為0算術操作符(續)自減“--”和自增“++”
intx=1,y;y=(++x)//x的值是2,y的值是2(先加后用)y=(x++)//x的值是2,y的值是1(先用后加)注意:操作符“--”和“++”是兩個帶副作用的操作符操作數的類型轉換在C++中,進行算術運算前通常要對操作數進行類型轉換,特別是對兩個類型不同的操作數,往往要把它們轉換成相同類型。算術運算的結果類型與轉換后的操作數類型相同。C++的類型轉換方式有兩種:隱式轉換和顯式轉換。隱式轉換是指由編譯程序按照某種預定的規則進行自動轉換,基本原則:精度低->精度高;顯式轉換是指由寫程序的人在程序中用類型轉換操作符明確地指出轉換。常規算術轉換規則
(usualarithmeticconversions)p25如果其中一個操作數類型為longdouble,則另一個轉換成longdouble。否則,如果其中一個操作數類型為double,則另一個轉換成double。否則,如果其中一個操作數類型為float,則另一個轉換成float。否則,先對操作數進行整型提升轉換(integralpromotions),如果轉換后操作數的類型不一樣,則按e)以后的規則再進行轉換。整型提升轉換
(integralpromotions)對于char、signedchar、unsignedchar、shortint、unsignedshortint類型,如果int型能夠表示它們的值,則這些類型轉換成int,否則,這些類型轉換成unsignedint。bool型轉換成int型,false為0;true為1。wchar_t和枚舉類型轉換成下列類型中第一個能表示其所有值的類型:int、unsignedint、longint、unsignedlongint。如果其中一個操作數類型為unsignedlongint,則另一個轉換成unsignedlongint。否則,如果一個操作數類型為longint,另一個操作數類型為unsignedint,那么,如果longint能表示unsignedint的所有值,則unsignedint轉換成longint,否則,兩個操作數都轉化成unsignedlongint。否則,如果一個操作數類型為longint,則另一個操作數轉換成longint。否則,如果一個操作數類型為unsignedint,則另一個操作數轉換成unsignedint。顯式轉換(強制類型轉換)
顯式轉換是指在程序中用類型轉換操作符顯式地指出轉換,顯式轉換又稱強制類型轉換。其格式為:
<類型名>(<操作數>)或
(<類型名>)<操作數>再例如:
inti=2147483647; intj=10; (double)i+j例如:
inti=-10; unsignedintj=3; i+(int)j關系與邏輯操作符
程序中經常要根據某個條件來決定其后續的動作,這里的條件為對數據進行比較和邏輯運算。 關系操作符 對數據進行大小比較,結果為bool類型的值:true或false。>(大于),<(小于),>=(不小于),<=(不大于),==(相等),!=(不等)例如:
3>2的結果為true 4.3<1.2的結果為false 'A'<'B'的結果為true false<true的結果為true
應避免對兩個浮點數進行“==”和“!=”比較運算
x==y 可寫成:fabs(x-y)<1e-6 x!=y 可寫成:fabs(x-y)>1e-6關系與邏輯操作符(續)
邏輯操作符 邏輯操作符實現邏輯運算,用于復雜條件的表示中。
!(邏輯非)、&&(邏輯與)、||(邏輯或)!true->false!false->truefalse||false->falsefalse||true->truetrue||false->truetrue||true->truefalse&&false->falsefalse&&true->falsetrue&&false->falsetrue&&true->true例如:
!(a>b) (age<10)&&(weight>30) (ch<'0')||(ch>'9')位操作
在C++中提供了對整型和枚舉類型數據按操作數的各個二進制位分別進行運算的操作,包括:邏輯位運算和移位運算。
邏輯位操作
~(按位取反),&(按位與),|(按位或),^(按位異或)~0→1,~1→00|0→00|1→11|0→11|1→10^0→00^1→11^0→11^1→00&0→00&1→01&0→01&1→1例:
s&0x10//判別s的第5位(從低位數)是0還是1 s=(s|0x40)//把第7位設置為1 s=(s&0xF7)//表示把第4位設置為0位操作
移位操作
<<(左移),>>(右移) 左移:把第一個操作數按二進制位依次左移由第二個操作數所指定的位數。左移時,高位舍棄,低位補0。例如: 0x3F61<<2的結果為0xFD84
右移:把第一個操作數按二進制位依次右移由第二個操作數所指定的位數。右移時,低位舍棄,高位按下面規則處理:對于無符號數或有符號的非負數,高位補0對于有符號數的負數,高位與原來的最高位相同賦值操作
通過賦值操作來改變變量的值。簡單賦值操作符a=b當賦值操作的兩個操作數類型不同時,把右邊操作數轉換成左邊的操作數類型。復合賦值操作符+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=a#=b功能上等價于:a=a#b有時能提高效率,a為表達式時,a#=b中的a只計算在C++里,賦值是一種運算,結果是左邊的操作數其它操作符
條件操作符(?:)d1?d2:d3如果d1的值為true或非零,則運算結果為d2,否則為d3。逗號操作符d1,d2,d3,...從左至右依次進行各個運算,操作結果為最后一個運算的結果逗號操作表示的計算更加清晰例如:x=a+b,y=c+d,z=x+ysizeof sizeof(<類型名>)或sizeof(<表達式>)計算某類型的數據占用的內存大小(字節數)
表達式
定義表達式是由操作符、操作數以及圓括號所組成的運算式。其中,操作數可以是常量、變量或函數調用,也可以是用圓括號括起來的表達式。例如:
(a+b)*c/12-max(a,b)
表達式類型算術表達式關系/邏輯表達式地址表達式等左值表達式和右值表達式根據表達式能否放在賦值操作的左邊左值表達式有明確的內存地址該地址中內容可被修改++前置、--前置、=可以改變操作數的值++前置、--前置不改變操作數的值,將操作結果存在一個臨時變量中變量x,++x,--x,x=?為左值表達式常量,x++,x--不是左值表達式定義了intk,j;沒有語法錯誤的表達式是(05秋)(k++)++(k+3)=5k--/=5k---jDvoid
mian()cin>>i>>d;關系與邏輯操作符(續)cout<<endl;在實數的內存空間中存儲的是尾數和指數兩部分,它們均采用二進制表示。把整型和實數類型統稱為算術類型(arithmetictypes)。co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨運核算員考試試題及答案
- 淮濱縣六年級試卷及答案
- 虎崗鄉期中考試卷及答案
- 呼蘭六中考試卷子及答案
- 2025年社會服務與志愿者管理考試試題及答案
- 2025年圖書情報員職業資格考試試題及答案
- 2025年藝術設計專業綜合素養測試題及答案
- 2025年運動科學研究生入學考試試題及答案詳解
- 2025年金融科技與區塊鏈應用課程考試題及答案
- 2025年綠色金融與可持續發展職業資格考試試題及答案
- 七年級歷史下冊圖片題剖析
- 中醫內科方歌大全
- 管線打開作業安全管理標準
- 溝通與談判第講非語言溝通
- Unit+6+Section+A+3a-3c 人教版八年級英語下冊
- 腎移植術后十宜十不宜專家講座
- 上海交通大學模板紅色版本
- 2022年高考政治真題試卷(湖南卷)及解析答案
- 農村常見犯罪與刑事處罰課件
- GB/T 79-2007內六角圓柱端緊定螺釘
- GB/T 615-2006化學試劑沸程測定通用方法
評論
0/150
提交評論