版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本數(shù)據(jù)類型第1頁(yè)/共49頁(yè)1五種基本數(shù)據(jù)類型
整型(說(shuō)明符為int
)字符型(說(shuō)明符為char)浮點(diǎn)型(說(shuō)明符為float
)雙精度型(說(shuō)明符為double
)空值型(說(shuō)明符為void)3.1基本數(shù)據(jù)類型
第2頁(yè)/共49頁(yè)
除void類型外,其余四種基本類型的說(shuō)明符之前還可以加上特定的修飾符形成擴(kuò)展類型。整型和字符型前面可加上:signed(有符號(hào)數(shù))或unsigned(無(wú)符號(hào)數(shù))、long(長(zhǎng)型)或short(短型)修飾,整型缺省為signed。當(dāng)整型前面有修飾符出現(xiàn)時(shí),可省略關(guān)鍵字int。例如:long為長(zhǎng)整型雙精度型前面可加上long來(lái)修飾。
float、double、longdouble統(tǒng)稱為浮點(diǎn)類型(實(shí)型)。
注意char和int比較: char型和int型有時(shí)可理解為同一類,但又不能完全一樣?2用修飾符形成的擴(kuò)展類型答:因?yàn)樽址趦?nèi)存中是以ASCII碼的形式存儲(chǔ)的,而ASCII碼值為整數(shù)(一致),不一直在于所占的字節(jié)數(shù)。第3頁(yè)/共49頁(yè)類型名字寬(字節(jié))范圍short[int]2–32768~32767signedshort[int]2–32768~32767unsignedshort[int]20~65535int4–2147483648~2147483647signed[int]4–2147483648~2147483647unsigned[int]40~4294967295long[int]4–2147483648~2147483647signedlong[int]4–2147483648~2147483647unsignedlong[int]40~4294967295char1–128~127signedchar1–128~127unsignedchar10~255float43.4E-38~3.4E+38(約7位有效數(shù)字)double81.7E-308~1.7E+308(約15位有效數(shù)字)longdouble103.4E-4932~1.1E+4932(約19位有效數(shù)字)void0無(wú)值表3.132位機(jī)上各基本類型的字寬及表示范圍第4頁(yè)/共49頁(yè)3.2常量同C++中其它數(shù)據(jù)一樣,常量也具有一定的數(shù)據(jù)類型。常量的類型是由其書(shū)寫(xiě)形式?jīng)Q定。例如,45.28是浮點(diǎn)類型,370是整型,‘p’是字符型等。第5頁(yè)/共49頁(yè)3.2.1整型常量
除十進(jìn)制外,整型常量還可以用八進(jìn)制、十六進(jìn)制來(lái)表示。
十進(jìn)制整型常量沒(méi)有前綴,且不能以0打頭。如:12八進(jìn)制整型常量必須以0打頭,其后由0~7之間的數(shù)字組成。如012、0375等。
十六進(jìn)制整型常量以0x或0X打頭,其后由0~9之間的數(shù)字和英文字母A~Z(或a~z)組成。如0x32、0xA8等。第6頁(yè)/共49頁(yè)
整型常量的后面可加上后綴,以區(qū)分各種不同類型的整數(shù)。具體如下:
后綴為L(zhǎng)(或l),表示該常量為長(zhǎng)整數(shù)(longint型),如8739L、-584l;
后綴為U(或u),表示該整型常量為無(wú)符號(hào)整數(shù)(unsignedint型),如85U、20u;
后綴為L(zhǎng)(或l)和U(或u)的組合,表示該常量為無(wú)符號(hào)長(zhǎng)整數(shù)(unsignedlongint型)如6397LU、765Lu、4325lU、07656lu(無(wú)符號(hào)八進(jìn)制長(zhǎng)整數(shù)7656)等。如果整型常量的后面沒(méi)有修飾符,C++編譯器會(huì)將其類型解釋為能存儲(chǔ)該數(shù)的最小整型。第7頁(yè)/共49頁(yè)3.2.2浮點(diǎn)常量浮點(diǎn)常量可以采用小數(shù)法和科學(xué)記數(shù)法表示??茖W(xué)記數(shù)法常用于表示很大或很小的浮點(diǎn)數(shù)。如1.2E8(即1.2×108)、-5.7356E-9(即-5.7356×10-9)。浮點(diǎn)常量的整數(shù)部分和小數(shù)部分如果為零可以省去,但不可兩者都省去。例如
.34456.5.E3.89E2都是合法的數(shù)據(jù)。第8頁(yè)/共49頁(yè)浮點(diǎn)常量可帶后綴,以區(qū)分各種不同類型的實(shí)數(shù)。沒(méi)有后綴,表示該浮點(diǎn)常量為雙精度數(shù)(double型),如75.23;后綴為F(或f),表示該浮點(diǎn)常量為浮點(diǎn)數(shù)(float型),如4.233F、-12.9f;后綴為L(zhǎng)(或l),表示該浮點(diǎn)常量為長(zhǎng)雙精度數(shù)(longdouble型),如8.5l、2.07L。
第9頁(yè)/共49頁(yè)3.2.3字符常量用引號(hào)括起來(lái)的單個(gè)字符稱為字符常量。例如‘Y’、‘y’、‘6’、‘#’、‘’(空格)等。注意:其中的'Y'和'y'是兩個(gè)不同的字符常量。第10頁(yè)/共49頁(yè)轉(zhuǎn)義序列(escapesequences)除了可顯示字符之外,還有一些不可顯示字符,用于產(chǎn)生某種控制操作,例如換行符、響鈴符等?!D(zhuǎn)義序列來(lái)表示。第11頁(yè)/共49頁(yè)轉(zhuǎn)義序列有兩種形式。一,轉(zhuǎn)義字符,由一個(gè)反斜杠后跟一個(gè)字符來(lái)表示。二,是用一個(gè)反斜杠加上該字符的ASCII碼來(lái)構(gòu)成。其中字符的ASCII碼可采用三位八進(jìn)制數(shù)(形如\ddd)或兩位十六進(jìn)制數(shù)(形如\xhh)。例如,換行符的ASCII碼為10(八進(jìn)制為12,十六進(jìn)制為0A),則可表示為'\012'或'\x0A';轉(zhuǎn)義字符含義\a響鈴\n換行符\r回車符\t水平制表符(tab鍵)\v垂直制表符\b退格符(backspace鍵)\\反斜線\'單引號(hào)\"雙引號(hào)\?問(wèn)號(hào)\f進(jìn)頁(yè)符(走紙)\0空字符(null)表3.2C++預(yù)定義的常用轉(zhuǎn)義字符
第12頁(yè)/共49頁(yè)3.2.4字符串常量
字符串常量是用雙引號(hào)括起來(lái)的字符序列。例如:
"Howareyou.""請(qǐng)輸入兩個(gè)整數(shù):"
需要注意的是:雙引號(hào):是字符串的定界符,因此字符串本身所包含的雙引號(hào)應(yīng)該用其轉(zhuǎn)義字符\"來(lái)表示。例如下面的語(yǔ)句:cout<<"\"Y\"or\"N\""<<endl;
產(chǎn)生的輸出為?:反斜杠加字符的ASCII碼來(lái)表示的轉(zhuǎn)義序列:C++將按最長(zhǎng)有效長(zhǎng)度對(duì)轉(zhuǎn)義序列進(jìn)行解釋。例如,語(yǔ)句
cout<<"x\x34y"<<endl;中,由于'\x34'是字符'4'的轉(zhuǎn)義序列,得到的輸出為:
x4y
"Y"or"N"第13頁(yè)/共49頁(yè)字符常量可用字符型變量來(lái)存放,在內(nèi)存中只占一個(gè)字節(jié);字符串常量是用一維字符數(shù)組來(lái)存放,在內(nèi)存中占多個(gè)字節(jié)。每個(gè)字符串除給定的字符序列外,都有一個(gè)結(jié)束符'\0'(即ASCII碼為0的“空字符”)。A(a)'A'的存儲(chǔ)形式B\0(b)"A"的存儲(chǔ)形式ABC\0(c)"ABC"的存儲(chǔ)形式圖3.1字符常量與字符串常量的存儲(chǔ)形式
第14頁(yè)/共49頁(yè)3.2.5符號(hào)常量常量除可以直接以其字面形式來(lái)表示(如3.14159)外,還可以用一個(gè)標(biāo)識(shí)符來(lái)代替,用來(lái)代替常量的標(biāo)識(shí)符稱為符號(hào)常量。符號(hào)常量定義格式:
1.用define定義:
例:#definePI3.142.用const定義:
const數(shù)據(jù)類型常量標(biāo)識(shí)符=常量表達(dá)式;
const數(shù)據(jù)類型常量標(biāo)識(shí)符(常量表達(dá)式);例如,下面這句
constfloatpi=3.14159;或
constfloatpi(3.14159);
符號(hào)常量實(shí)際上是只讀變量,由保留字const規(guī)定了它的值在程序中不能被改變。例如,下面的語(yǔ)句是非法的:
constintx=10;……x=20;//非法第15頁(yè)/共49頁(yè)3.3變量 變量是盛數(shù)的容器。 計(jì)算機(jī)中的變量是內(nèi)存物理存儲(chǔ)單元的抽象。
計(jì)算機(jī)變量的概念涉及以下四個(gè)方面:
變量名 變量類型 變量存儲(chǔ)地址 變量的值第16頁(yè)/共49頁(yè)3.3.1變量的定義在C++中,變量必須先定義、后使用。
例如,語(yǔ)句
intx,y; charch;
聲明了兩個(gè)整型變量x、y,一個(gè)字符型變量ch。有關(guān)變量的重要概念:變量的類型——變量的長(zhǎng)度(字節(jié)數(shù))變量存儲(chǔ)地址變量名(存儲(chǔ)單元首地址的映射)變量的值——存儲(chǔ)單元中的內(nèi)容。xych20002004200810第17頁(yè)/共49頁(yè)變量可以在定義時(shí)初始化,給變量賦一個(gè)初值。例如:
inta=3,b=-78;doublearea=67.34;上述變量聲明語(yǔ)句的執(zhí)行可以分解為兩個(gè)底層操作:
實(shí)例化+初始化C++提供另一種形式的初始化方法。例如,上面兩個(gè)語(yǔ)句可改寫(xiě)為:
inta(3),b(-78);doublearea(67.34);
第18頁(yè)/共49頁(yè)3.3.2變量的賦值變量值的改變通過(guò)賦值運(yùn)算來(lái)完成?!?”是賦值運(yùn)算符,它的左邊只能是變量標(biāo)識(shí)符,右邊可以是常量、變量或表達(dá)式等。例如,對(duì)于已聲明為int型的變量x,語(yǔ)句
x=3+2*5;將表達(dá)式3+2*5的值13賦給x,即填入x的存儲(chǔ)區(qū)域中。
值得注意的是,賦值運(yùn)算符是從右到左結(jié)合的。例如表達(dá)式
x=y=5;相當(dāng)于
y=5;x=y;第19頁(yè)/共49頁(yè)3.4指針變量3.4.1指針的概念1.指針:即變量的內(nèi)存地址。2.指針變量指針變量是一種特殊的變量:它存放的不是數(shù)據(jù)的值,而是另一個(gè)變量的地址。指針變量常常直接簡(jiǎn)稱為指針。
第20頁(yè)/共49頁(yè)指針的類型就是它所指向的那個(gè)變量的類型,有時(shí)也稱為指針的基類型。指針本身通常是寄存器變量,但也可以是存儲(chǔ)器變量。當(dāng)指針為存儲(chǔ)器變量時(shí),編譯器也會(huì)為它分配一個(gè)內(nèi)存單元。這時(shí)指針也有自己的存儲(chǔ)地址。存放指針地址的變量稱為指針的指針。6AF31204x_ptrx39.4986AF312047B016582圖3.3指針與它所指向的變量……
指針的指針第21頁(yè)/共49頁(yè)(1).指針的定義和初始化指針同一般變量一樣,在使用之前必須先定義。定義時(shí)要指明指針的類型,并在指針名前加類型修飾符*。定義指針的聲明語(yǔ)句格式如下:
類型*指針名;
或者類型*指針名;
其中,*是一個(gè)指針類型修飾符,不是變量名的一部分。例如:
int*x_ptr;或者int*x_ptr;
定義了一個(gè)指向int型變量的指針x_ptr;而
char*c_ptr;或者char*c_ptr;
定義了一個(gè)指向char型變量的指針c_ptr。需要注意的是,語(yǔ)句
int*x,y;不是定義了兩個(gè)int型指針x和y,而是定義了一個(gè)int型指針x和一個(gè)int型變量y。從避免混淆的角度看,用另一種格式int*x,y;更為合適。
第22頁(yè)/共49頁(yè)一個(gè)指針在定義以后,并不具體地指向某個(gè)變量,而只是確定了類型??梢詫?duì)指針進(jìn)行初始化,讓它指向某個(gè)具體的變量。
“&”是取地址運(yùn)算符,用在一個(gè)存儲(chǔ)器操作數(shù)的前面,表示取存儲(chǔ)器操作數(shù)的地址值。例如:
floatsalary;float*salary_ptr=&salary;就將指針salary_ptr初始化為變量salary的地址值,也即指向了具體的salary。salary_ptrsalary圖3.4變量salary和指向salary的指針
第23頁(yè)/共49頁(yè)(2)指針的賦值和引用
除了在指針定義時(shí)對(duì)它進(jìn)行初始化外,還可以使用賦值運(yùn)算來(lái)給指針賦以變量的地址值。例如:
inta=-8978;int*p;p=&a;這里,p被賦值為變量a的地址。也可以將一個(gè)已被賦值的指針賦給另一個(gè)相同類型的指針。例如:
doublea;double*x=&a,*y;y=x;這樣一來(lái),y就與x指向同一個(gè)變量a。第24頁(yè)/共49頁(yè)注意:只有同類型的指針才能相互賦值。例如,假定有intcount=78;floatallowance=3.45E+2;int*c_ptr;float*a_ptr;則
c_ptr=&count;//合法
a_ptr=&allowance;//合法
c_ptr=&allowance;//非法
a_ptr=&count;//非法
c_ptr=a_ptr;//非法
a_ptr=c_ptr;//非法第25頁(yè)/共49頁(yè)空指針:
空指針是值為零的指針。 許多C++系統(tǒng)的函數(shù)庫(kù)(如iostream.h、string.h)中都將空指針定義為名字NULL。第26頁(yè)/共49頁(yè)除了“&”之外,C++還有一個(gè)關(guān)于指針的運(yùn)算符“*”?!?”是取內(nèi)容運(yùn)算符,用在指針變量的前面,表示取指針?biāo)赶虻拇鎯?chǔ)單元的值。例如,假設(shè)有
inta=90;int*a_ptr=&a;intx;那么
x=*a_ptr;將把a(bǔ)_ptr所指的存儲(chǔ)區(qū)域的內(nèi)容,即變量a的值賦給x,則變量x值為90。而*a_ptr=98;將98填入a_ptr所指的存儲(chǔ)區(qū)域,即a的值被填為98。同理*a_ptr=*a_ptr+1;將a_ptr所指的存儲(chǔ)區(qū)域的值加1,即a的值被加了1,與語(yǔ)句a=a+1;的效果一樣。第27頁(yè)/共49頁(yè)應(yīng)當(dāng)注意,指針變量的聲明語(yǔ)句
int*a_ptr=&a;與賦值語(yǔ)句*a_ptr=98;中的“*”的含義是不同的。聲明語(yǔ)句中的:“*”是指針類型修飾符,用來(lái)表明a_ptr是指針變量;賦值語(yǔ)句中的“*”是取內(nèi)容運(yùn)算符,用來(lái)取指針變量的內(nèi)容。二者不可混淆。而且,C++的乘法運(yùn)算符也是“*”,與前面兩者的含義也不相同。
第28頁(yè)/共49頁(yè)例3.2一個(gè)關(guān)于指針的例子。
#include<iostream.h>voidmain(){intx=50;int*x_ptr=&x;//x_ptr指向xcout<<"x="<<x<<endl;//輸出x的值
cout<<"*x_ptr="<<*x_ptr<<endl; //輸出x_ptr所指單元的值
cout<<"x_ptr="<<x_ptr<<endl; //輸出x_ptr的值*x_ptr=100;cout<<"x="<<x<<endl;cout<<"*x_ptr="<<*x_ptr<<endl;cout<<"x_ptr="<<x_ptr<<endl;}程序的輸出為:
x=50*x_ptr=50x_ptr=0x0065FDF4x=100*x_ptr=100*x_ptr=0x0065FDF4第29頁(yè)/共49頁(yè)#include<iostream.h>//例:給出程序的運(yùn)行結(jié)果voidmain(){ inta; int*aPtr;a=24; aPtr=&a; cout<<"Theaddressofais"<<&a<<endl;cout<<"ThevalueofaPtris"<<aPtr<<endl; cout<<"Thevalueofais"<<a<<endl;cout<<"Thevalueof*aPtris"<<*aPtr<<endl<<endl; cout<<"&*aPtr="<<&*aPtr<<endl;cout<<"*&aPtr="<<*&aPtr<<endl; cout<<"*aPtr="<<&aPtr<<endl;}Thevalueofais24Thevalueof*aPtris24&*aPtr=0063FE00*&aPtr=0063FE00Theaddressofais0063FE00ThevalueofaPtris0063FE00&aPtr=0065FDF424…0063FE00……0063FE00aPtra0065FDF4第30頁(yè)/共49頁(yè)3.4.2指針運(yùn)算除了前面介紹的“&”、“*”運(yùn)算和賦值運(yùn)算外,指針只能進(jìn)行兩種運(yùn)算。一種是與整數(shù)相加或相減,另一種是在一定條件下,比如兩個(gè)指針都指向同一個(gè)數(shù)組時(shí),兩個(gè)指針可以相減或相比較。關(guān)于后一種情況,將在下一節(jié)介紹數(shù)組時(shí)討論。指針與整數(shù)進(jìn)行的加、減運(yùn)算,代表著指針在內(nèi)存空間上、下移動(dòng)。具體上移或下移的字節(jié)數(shù)與其類型密切相關(guān)。第31頁(yè)/共49頁(yè)例如,假設(shè)在某字長(zhǎng)為32的計(jì)算機(jī)中,一個(gè)int型數(shù)據(jù)占4個(gè)字節(jié),如果有
inta=78;int*x=&a;x初始化為指向變量a。在語(yǔ)句
x=x+1;執(zhí)行后,x中存放的地址值被加了4,指向變量a下面一個(gè)整數(shù)。同理,語(yǔ)句
x=x–1;執(zhí)行后,x指向了上一個(gè)整數(shù)。其它類型的指針也一樣。假定一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié),指針ptr已聲明為double型變量,那么語(yǔ)句
ptr=ptr+2;執(zhí)行以后,ptr中存放的值被加了16,ptr指向了原來(lái)所指數(shù)據(jù)之后的第二個(gè)數(shù)據(jù)。第32頁(yè)/共49頁(yè)
在將指針加1或減1時(shí),也可以使用C++的增1運(yùn)算符++和減1運(yùn)算符––。它們分別表示把變量的值加1和減1。第33頁(yè)/共49頁(yè)
增1運(yùn)算符(或減1)運(yùn)算符的前綴形式和后綴形式的區(qū)別。 以增1運(yùn)算符為例,后綴++是先取變量的值然后再將變量的值加1;前綴++是先將變量的值加1然后再取變量的值。所以有:
intx=7,y=3,z; z=x++;//執(zhí)行后,z=7,x=8 z=++y;//執(zhí)行后,z=4,y=4第34頁(yè)/共49頁(yè)
使用C++的增(減)1運(yùn)算符,涉及與指針有關(guān)的操作時(shí),應(yīng)注意加減是發(fā)生在地址上還是發(fā)生在內(nèi)容上。 例如:int*P;p++;//相當(dāng)于p=p+1;地址加1,P指向下一個(gè)整型數(shù)據(jù);而*p++;//相當(dāng)于*p=*p+1;內(nèi)容加1。第35頁(yè)/共49頁(yè)
當(dāng)++或––與*同時(shí)作用于指針時(shí),同樣應(yīng)該注意運(yùn)算的順序。 例如:x=*p++;
相當(dāng)于x=*(p++);即先從當(dāng)前地址中取值,然后將指針指向下一個(gè)數(shù)據(jù)。 又如:x=*++p;
相當(dāng)于x=*(++p);
先將地址加1,再取地址中的數(shù)據(jù)賦給x。 而x=++*p;
相當(dāng)于x=++(*p);
表示先取p所指向的單元內(nèi)的數(shù)據(jù)值,再將數(shù)據(jù)值加1后賦給x。第36頁(yè)/共49頁(yè)#include<iostream.h>//例:給出程序的運(yùn)行結(jié)果voidmain(){ inta[3]={24,30,8}; int*p; p=a; intx; x=*p++; cout<<x<<","<<*p<<endl; x=*++p; cout<<x<<","<<*p<<endl; x=++*p; cout<<x<<","<<*p<<endl;}24,308,89,9第37頁(yè)/共49頁(yè)3.5類型轉(zhuǎn)換類型轉(zhuǎn)換分為兩種,一種是隱式轉(zhuǎn)換,一種是強(qiáng)制轉(zhuǎn)換。3.5.1隱式轉(zhuǎn)換這是一種由系統(tǒng)自動(dòng)進(jìn)行的類型轉(zhuǎn)換。⑴對(duì)于賦值運(yùn)算,當(dāng)賦值運(yùn)算符“=”左、右兩邊的操作數(shù)為不同類型時(shí),總是將右邊表達(dá)式的類型轉(zhuǎn)換為左邊變量的類型,然后再賦給左邊的變量。例如,對(duì)于以下語(yǔ)句:
inta=89;doubleb=3.5;a=b;cout<<"a="<<a<<"b="<<b<<"\n";編譯器先將b的值轉(zhuǎn)換為int型,再賦值給a。但b的值在轉(zhuǎn)換為int型時(shí)小數(shù)部分將丟掉,因此將導(dǎo)致警告信息。以上程序段的輸出為:
a=3b=3.5類型轉(zhuǎn)換并不改變b本身的類型,b仍然為double型。第38頁(yè)/共49頁(yè)例3.3分析下面程序的運(yùn)行結(jié)果。
#include<iostream.h>voidmain(){intx; charch='a';//字符'a'的ASCII碼為97x=ch+200; cout<<"x="<<x<<"\n";cout<<"ch="<<ch<<"\n";cout<<"ch+200="<<ch+200<<"\n";}
⑵short型、signedshort型、和所有的char型的數(shù)據(jù)在運(yùn)算前將無(wú)條件轉(zhuǎn)換成int型的數(shù)據(jù)。例3.3中,在做加法時(shí),ch先被轉(zhuǎn)換成int型數(shù)據(jù)97,再與200相加。此程序的輸出為:
x=297ch=ach+200=297第39頁(yè)/共49頁(yè)例3.4分析下面程序的運(yùn)行結(jié)果。
#include<iostream.h>voidmain(){charstring[]="hello";char*p=string;cout<<string<<endl;cout<<p<<endl;cout<<*p<<*(p+1)<<*(p+2)<<*(p+3)<<*(p+4)<<endl;cout<<*p<<*p+1<<*p+2<<*p+3<<*p+4<<endl;}程序的輸出為:
hellohellohelloh105106107108在最后一個(gè)輸出語(yǔ)句中,*p的值是字符'h',但在作加法之前將會(huì)先轉(zhuǎn)換為int型,即字符'h'的ASCII碼104,因此*p+1的值為105,依此類推。//特例:指針指向字符串首地址時(shí)的輸出第40頁(yè)/共49頁(yè)⑶除以上⑴、⑵種情況外,如果一個(gè)二元運(yùn)算符左、右兩邊的操作數(shù)的類型不同,則將值域(即取執(zhí)范圍)較小的類型向值域較大的類型轉(zhuǎn)換。值域較小者稱為低類型,值域較大者稱為高類型。運(yùn)算結(jié)果的類型同高類型一樣。類型按由高到低的順序依此是:
int、unsigned、long、unsignedlong、float、double、longdouble例如,下面程序段
intx=5; doubley=89.6;cout<<"x+y="<<x+y<<"\n";中,二元運(yùn)算符+號(hào)左邊的int型的x將先被轉(zhuǎn)換為double型的值,再與右邊的double型的y相加。程序段的輸出是:
x+y=94.6第41頁(yè)/共49頁(yè)⑷在函數(shù)調(diào)用時(shí),實(shí)參總是先轉(zhuǎn)換成形參的類型;在函數(shù)有返回執(zhí)值的調(diào)用中,若return后面的表達(dá)式的類型與該函數(shù)的類型不一致,則總是將此表達(dá)式強(qiáng)制轉(zhuǎn)換為函數(shù)的類型。需要指出的是,由于隱式轉(zhuǎn)換是由編譯器完成的,在程序中反映不出來(lái),有時(shí)侯丟失數(shù)據(jù)也不易察覺(jué),因此應(yīng)盡量避免隱式轉(zhuǎn)換。在需要用不同類型的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),最好使用強(qiáng)制轉(zhuǎn)換。第42頁(yè)/共49頁(yè)隱式轉(zhuǎn)換舉例如果有
inti,j;charch;floata,b;doublex,y;longdoublew;則有:
表達(dá)式表達(dá)式的類型
i+a*bx*(b/j+i)ch+ix=ch+i(x+y+j)–w/xch+'a'floatdoubleintdoublelongdoubleint第43頁(yè)/共49頁(yè)3.5.2強(qiáng)制轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換是指在程序中將某種類型的數(shù)據(jù)強(qiáng)制性地轉(zhuǎn)換為另一類型,而不必遵循隱式轉(zhuǎn)換中的規(guī)則。強(qiáng)制類型轉(zhuǎn)換的形式有如下兩種:類型名(表達(dá)式)或者
(類型名)表達(dá)式例如:
(float)i或
float(i)將把變量i轉(zhuǎn)換成float型。第44頁(yè)/共49頁(yè)強(qiáng)制轉(zhuǎn)換舉例假設(shè)同前面一樣,有
inti,j;charch;floata,b;doublex,y;longdoublew;則有:
表達(dá)式表達(dá)式的類型
(int)(a+w)(int)a+w+b(double)ch–ij*(float)x/y這里需要注意的是,表達(dá)式
(int)a+w是將a的值轉(zhuǎn)換為int型后與w相加,而
int(a+w)是將表達(dá)式a+w的值轉(zhuǎn)換成int型。intlongdoubledoubledouble第45頁(yè)/共49頁(yè)3.5.3類型轉(zhuǎn)換時(shí)要注意的問(wèn)題在進(jìn)行類型轉(zhuǎn)換時(shí)一定要特別小心,否則可能會(huì)出現(xiàn)預(yù)料之外的結(jié)果,比如以下幾種情況:⑴高類型轉(zhuǎn)換為低類型時(shí)。這時(shí)數(shù)據(jù)的精度要受到損失,是不安全的轉(zhuǎn)換。請(qǐng)看
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《專題10 自然資源的特征與分類》(同步訓(xùn)練)高中地理高中三年級(jí)-中圖版-2024-2025學(xué)年
- 物流行業(yè)數(shù)字化工廠效率提升方案
- 心理咨詢機(jī)構(gòu)服務(wù)制度與標(biāo)準(zhǔn)
- 加油站顧客滿意度調(diào)查方案
- 中小學(xué)教學(xué)環(huán)境衛(wèi)生管理制度
- 賽事組織項(xiàng)目合伙協(xié)議書(shū)
- 藥品儲(chǔ)存與運(yùn)輸管理規(guī)定
- 城市道路欄桿拆除安全實(shí)施方案
- 戶外碎石加工項(xiàng)目電力方案
- 文化活動(dòng)場(chǎng)所性侵防護(hù)方案
- 勞動(dòng)仲裁:如何處理仲裁證據(jù)
- 大酒店勞務(wù)派遣服務(wù)專項(xiàng)方案
- 詩(shī)歌朗誦與表演實(shí)踐案例
- 醫(yī)院培訓(xùn)課件:《病室環(huán)境管理》
- 中國(guó)感染性休克指南
- 人教版勞動(dòng)教育二年級(jí)上冊(cè)全冊(cè)教學(xué)設(shè)計(jì)
- 2021年初中部漢語(yǔ)聽(tīng)寫(xiě)大賽題庫(kù)
- 大數(shù)據(jù)治理與服務(wù)管理解決數(shù)據(jù)孤島問(wèn)題的關(guān)鍵措施
- 帶電作業(yè)規(guī)程課件
- 建筑工程《擬投入本項(xiàng)目的主要施工設(shè)備表及試驗(yàn)檢測(cè)儀器設(shè)備表》
- 小針刀治療腰腿痛
評(píng)論
0/150
提交評(píng)論