




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章數(shù)據(jù)類型與表達(dá)式
C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
1C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介第2章數(shù)據(jù)類型與表達(dá)式
學(xué)習(xí)目標(biāo)
掌握各種基本數(shù)據(jù)類型的定義名、長(zhǎng)度、表示范圍;掌握各種類型的數(shù)值的表示;弄清變量以及變量賦值的實(shí)質(zhì),標(biāo)識(shí)符的構(gòu)成規(guī)則,會(huì)定義各種類型的變量以及定義變量的初值;弄清變量與常量,三種常量之間的區(qū)別;掌握常用運(yùn)算符的含義、優(yōu)先級(jí)、結(jié)合性、使用方法;理解表達(dá)式的構(gòu)成規(guī)則、表達(dá)式的左值和右值的含義,會(huì)根據(jù)計(jì)算式寫(xiě)出相應(yīng)的表達(dá)式;掌握隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換的概念和使用方式,能夠使用顯式類型轉(zhuǎn)換強(qiáng)制進(jìn)行表達(dá)式值的轉(zhuǎn)換。
C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介2.1數(shù)據(jù)類型概述C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
C++中新增3C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介2.2基本數(shù)據(jù)類型C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.2.1字符集字符集是構(gòu)成C++程序語(yǔ)句的最小元素。字符集由下列各類字符構(gòu)成:(1)英文字母
A~Z,a~z(2)數(shù)字
0-9(3)特殊字符:
空格!#%^&*_(下劃線)-+=|~<>/\`“?,.;()[]{}4C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介2.2.2基本數(shù)據(jù)類型C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
類別數(shù)據(jù)類型定義名表示范圍(存儲(chǔ)值的范圍)字節(jié)數(shù)有效位數(shù)boolboolfalse,true(0,1)1char[signed]char'\x80'~'\x7F'(-128~127)1unsignedchar'\x00'~'\xFF'(0~255)1wchar_t'\x0000'~'\xFFFF'(0~65535)2int[signed]int-231~231-1(-2147483648~2147483647)4signed[int]-231~231-14unsigned[int]0~232-1(0~4294967295)4[signed]short[int]-215~215-1(-32768~32767)2[signed]long[int]-231~231-14unsignedshort[int]0~216-1(0~65535)2unsignedlong[int]0~232-14floatfloat±3.4e±3847double±1.7e±308815longdouble±1.7e±493210(或8)19voidvoid
表中符號(hào)[]表示可選,表示其中的內(nèi)容可以缺省,也有默認(rèn)的意思。如[signed]char表示char類型默認(rèn)為signedchar;使用類型名定義一個(gè)變量時(shí),[]中的內(nèi)容可以省略。
整型int默認(rèn)為有符號(hào)整型,即:類型signedint與int相同,所以signedshortint、signedlongint分別與shortint、longint相同。如果int型有長(zhǎng)短修飾或符號(hào)修飾時(shí),int也可缺省。
符號(hào)的類型修飾signed,unsigned與長(zhǎng)短的修飾short,long可以隨意組合,且前后順序隨意。整型數(shù)據(jù)的長(zhǎng)度(存儲(chǔ)空間)隨系統(tǒng)的不同而不同,在16位系統(tǒng)下如DOS,其長(zhǎng)度與短整型相同,占有16bit。在32位系統(tǒng)如Linux、Unix、WindowsNT系統(tǒng)下,長(zhǎng)度為32bit。表中的整型是32位系統(tǒng)下的整型。有效位數(shù)欄中的數(shù)據(jù)是指浮點(diǎn)數(shù)十進(jìn)制的有效位數(shù),包括整數(shù)與小數(shù)部分??罩敌蛌oid用于描述沒(méi)有返回值的函數(shù)以及通用指針類型。有的編譯器如visualC++對(duì)longdouble采用8字節(jié)存儲(chǔ)。C++中提供wchar_t類型,用于描述像漢字這樣的大字符集。漢字字符集有簡(jiǎn)體字符集GB2312、繁體字符集Big5。在C++中,對(duì)于大字符集字符可用多個(gè)char類型的數(shù)據(jù)來(lái)實(shí)現(xiàn),wchar_t類型主要用在國(guó)際化程序的實(shí)現(xiàn)中。。5C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介2.3數(shù)值C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
數(shù)值就是指直接參加運(yùn)算的數(shù)。在有的書(shū)上稱為文字常量(literalconstant)或常量。文字是程序中直接用符號(hào)表示的數(shù)值,常量是指在程序運(yùn)行過(guò)程中,其值不能被改變的量。出現(xiàn)在程序中的數(shù)值在程序運(yùn)行過(guò)程中是不能被改變的,故稱之為文字常量。通俗說(shuō),文字常量就是數(shù)值。2.3.1整型數(shù)各種進(jìn)制的整數(shù)表示如下:(1)十進(jìn)制整數(shù)
十進(jìn)制是整型數(shù)據(jù)的默認(rèn)表示形式,不需要加任何前綴。我們熟悉的數(shù)學(xué)中的數(shù)據(jù)就是用十進(jìn)制表示的。十進(jìn)制使用的數(shù)字有0、1、2、3、4、5、6、7、8、9。如:123、456、1、-123都是十進(jìn)制整數(shù)。(2)八進(jìn)制整數(shù)
以數(shù)字0作為前綴,數(shù)字為0、1、2、3、4、5、6、7。如:0123表示八進(jìn)制數(shù)123即(123)8。其值為:1×82+2×81+3×80,等于十進(jìn)制數(shù)83。-017表示八進(jìn)制數(shù)(-17)8,即十進(jìn)制數(shù)-15。6C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
以0x或0X開(kāi)頭,數(shù)字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中英文字母A~F代表的值為10~15。如:0x12B表示十六進(jìn)制數(shù)(12B)16,其值為:1×162+2×161+11×160,等于十進(jìn)制數(shù)299。-0x17等于十進(jìn)制數(shù)-23。十六進(jìn)制使用的英文字母除了使用大寫(xiě)字母外還可以使用a、b、c、d、e、f小寫(xiě)字母,并且大小寫(xiě)可以混用。(3)十六進(jìn)制整數(shù)注意:各進(jìn)制數(shù)只能使用其規(guī)定的數(shù)字,N進(jìn)制使用的數(shù)字為0~N-1。如0128是不合法的八進(jìn)制數(shù),因?yàn)?不是八進(jìn)制所使用的數(shù)字。八進(jìn)制整數(shù)前不能省略0,省略了0就是十進(jìn)制數(shù)。各種類型整數(shù)的表示(1)基本整型數(shù)
基本整型數(shù)不需要在數(shù)字后加任何后綴。在16位系統(tǒng)下,整型數(shù)的長(zhǎng)度為16bit(2字節(jié))如:12、-1235等是用十進(jìn)制表示的整型數(shù)。如0xc、0xfb2d是用十六進(jìn)制表示的整型數(shù),其值分別為12、-1235。在32位系統(tǒng)下,長(zhǎng)度為32bit(4字節(jié)),如:12、-1235等。12、-1235用十六進(jìn)制表示分別為0xc、0xfffffb2d。7C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
長(zhǎng)整型的長(zhǎng)度與取值范圍與32位系統(tǒng)下的基本整型一樣。表示方法則是在數(shù)字后加l或L做標(biāo)記。如:345667L、-123L、12l。(2)長(zhǎng)整型數(shù)注意:為了區(qū)別表示長(zhǎng)整型數(shù)字母l與數(shù)字1,一般使用大寫(xiě)L;在定義一個(gè)整型數(shù)時(shí),不管采用哪種進(jìn)制形式,都不要超過(guò)其表示范圍。(4)無(wú)符號(hào)長(zhǎng)整型數(shù)據(jù)
無(wú)符號(hào)長(zhǎng)整型的長(zhǎng)度與取值范圍與32位系統(tǒng)下的基本整型一樣。表示方法是在數(shù)字后同時(shí)跟有l(wèi)(或L)和u(或U)。如:235Lu、12lU。當(dāng)同時(shí)跟有L和U,表示無(wú)符號(hào)長(zhǎng)整型的常量時(shí),先后順序任意。如17896UL可表示成17896LU。(3)無(wú)符號(hào)整型數(shù)
無(wú)符號(hào)整型數(shù)據(jù)的長(zhǎng)度與基本整型常量一樣。但取值范圍不同,16位系統(tǒng)下,范圍為0~65535;32位系統(tǒng)下范圍為0~4294967295。表示方法是在數(shù)字后加u或U做標(biāo)記。如:235u、12U。其中12u和12的區(qū)別是12u為無(wú)符號(hào)整數(shù),12為有符號(hào)整數(shù)。8C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
(1)十進(jìn)制數(shù)形式
由0~9和小數(shù)點(diǎn)組成。如:23.456、-12.3等。(2)指數(shù)形式
表示格式為:2.3.2
浮點(diǎn)型數(shù)
浮點(diǎn)型數(shù)即我們平常使用的實(shí)型數(shù),由整數(shù)部分和小數(shù)部分組成。通常有兩種表示形式:十進(jìn)制浮點(diǎn)型數(shù)|基本整型數(shù)1E基本整型數(shù)2
符號(hào)|表示“或”。十進(jìn)制浮點(diǎn)型數(shù)與基本整型數(shù)1是尾數(shù);E或e代表底數(shù)10;基本整型數(shù)2為指數(shù)。如:1.3e4、-12.5e-4分別表示1.3×104和-12.5×10-4。注意:當(dāng)以指數(shù)形式表示一個(gè)實(shí)數(shù)時(shí),整數(shù)部分和小數(shù)部分可以省略其一,但不能都省略。如.123E5、123.E-6都是正確的,但不能寫(xiě)成E-2這種形式。浮點(diǎn)數(shù)默認(rèn)為雙精度浮點(diǎn)型,在內(nèi)存中占8個(gè)字節(jié),取值范圍為±1.7e±308。如果帶有后綴F或f,則為float類型,在內(nèi)存中占4個(gè)字節(jié),取值范圍為±3.4e±389C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
轉(zhuǎn)義符形式1:2.3.3
字符型數(shù)字符數(shù)是用英文單引號(hào)括起來(lái)的一個(gè)字符。如:'a','A'等。\字符助記符
有些ASCII碼字符如回車、退格等不能直接用在用單引號(hào)中。這些數(shù)據(jù)可用轉(zhuǎn)義序列來(lái)表示
:
轉(zhuǎn)義符形式2:字符助記符只有一個(gè)字母,例如n、t分別為newline(換行符)、table(制表符)的助記符。故\n、\t分別表示換行符與制表符。
\字符的ASCII碼值
字符的ASCII碼值的形式為\ooo與\xhh,其中\(zhòng)ooo表示3位八進(jìn)制數(shù),\xhh表示2位十六進(jìn)制數(shù)。例如,制表符table用第2種形式的轉(zhuǎn)義序列表示為\011或\x09。\ooo中,ooo為不超過(guò)3位的八進(jìn)制數(shù)字,可以不以0開(kāi)頭。10C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介常用預(yù)定義的轉(zhuǎn)義序列
轉(zhuǎn)義序列含義ASCII碼名ASCII碼值\n換行符,相當(dāng)于按enter鍵,包括回車、換行NL(LF)D,A\t橫向(水平)跳到下一制表位置,相當(dāng)于按tab鍵HT9\v豎向跳格VTB\b退格,相當(dāng)于按backspace鍵BS8\r回車(return)CRD\f走紙(feed)換頁(yè)FFC\a鳴鈴(alert)BEL7\\反斜線符\5C\'單引號(hào)'27\"雙引號(hào)"22\oooooo為3位八進(jìn)制數(shù)\xhhhh為2位十六進(jìn)制數(shù)hh11C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介轉(zhuǎn)義序列的用法舉例
78910111213141516voidmain(){cout<<'A'<<'\t'<<';'<<'\n';cout<<'\102'<<'\011'<<'\073'<<'\012';cout<<'\103'<<'\11'<<'\73'<<'\12';cout<<'\x44'<<'\x09'<<'\x3b'<<'\x0a';cout<<'\x45'<<'\x9'<<'\x3b'<<'\xa';cout<<"\x46\x09\x3b\x0d\x0a";cout<<"\xcd\xcd\xcd\xcd\xcd"<<endl;}運(yùn)行結(jié)果A ;
B ;
C ;
D ;
E ;
F ;
屯屯注意:由于一個(gè)漢字字符包括兩個(gè)字符,因此不能在單引號(hào)中使用漢字。以八進(jìn)制表示字符的ASCII碼值以八進(jìn)制表示字符的ASCII碼值,省略了八進(jìn)制數(shù)前面的0以十六進(jìn)制表示字符的ASCII碼值以十六進(jìn)制表示字符的ASCII碼值,省略了前面的0字符串中采用轉(zhuǎn)義序列輸出ASCII碼字符。12C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
"Thisisastring\n"字符串與字符比較的區(qū)別:
2.3.4字符串
字符串?dāng)?shù)值簡(jiǎn)稱字符串,是使用一對(duì)雙引號(hào)括起來(lái)的字符序列。例如,英文串:中文串:
"我們都是中國(guó)人\t我們熱愛(ài)自己的祖國(guó)\n"(1)
字符由單引號(hào)括起來(lái),字符串由雙引號(hào)括起來(lái)。如:'a'與"a"分別表示a字符與a這個(gè)字符串。
(2)
字符只能是單個(gè)字符,字符串則可是零個(gè)或多個(gè)字符。如:'abd'是不合法的。但""是合法的,表示空串。
(3)
字符占一個(gè)字節(jié)的內(nèi)存空間,字符串占內(nèi)存字節(jié)數(shù)等于字符串的長(zhǎng)度加1。系統(tǒng)自動(dòng)在字符串末尾添加'\0'作為結(jié)束標(biāo)記。如:'a'在內(nèi)存中占用一個(gè)字節(jié);而"a"在內(nèi)存中占用兩個(gè)字節(jié),分別存放a和\0。2.3.5布爾型數(shù)
布爾型數(shù)值只有兩個(gè):true(真)和false(假)。在C++的算術(shù)運(yùn)算式中,把布爾型數(shù)據(jù)當(dāng)作整型數(shù)據(jù),true與false分別當(dāng)作1與0。在邏輯運(yùn)算式中則把非0數(shù)據(jù)當(dāng)成true,把0當(dāng)成false。注意:不能將true與false寫(xiě)成TRUE與FALSE。13C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介2.4變量C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
變量是存儲(chǔ)數(shù)據(jù)的內(nèi)存區(qū)域,變量名是這塊區(qū)域的名字或助記符。變量之所以叫變量是因?yàn)樵诔绦蜻\(yùn)行的過(guò)程中變量標(biāo)識(shí)的內(nèi)存區(qū)中的數(shù)據(jù)可以改變。在C++中變量取名要遵循標(biāo)識(shí)符的構(gòu)成規(guī)則。2.4.1標(biāo)識(shí)符與關(guān)鍵字標(biāo)識(shí)符用來(lái)標(biāo)識(shí)程序中的一些實(shí)體。標(biāo)識(shí)符的構(gòu)成規(guī)則如下:(1)以大寫(xiě)字母、小寫(xiě)字母或下劃線_開(kāi)頭;
(2)可以由大寫(xiě)字母、小寫(xiě)字母、下劃線、數(shù)字組成;
(3)大寫(xiě)字母與小寫(xiě)字母分別代表不同的標(biāo)識(shí)符;
(4)不能是C++的關(guān)鍵字。
C++的關(guān)鍵字是C++預(yù)定義的單詞,也叫保留字,意思是為C++語(yǔ)言保留,不能用作標(biāo)識(shí)符。14C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
C++的關(guān)鍵字表asmconst_castexplicitinlinepublicstructtypenameautocontinueexportintregisterswitchunionbooldefaultexternlongreinterpret_casttemplateunsignedbreakdeletefalsemutablereturnthisusingcasedofloatnamespaceshortthrowvirtualcatchdoublefornewsignedtruevoidchardynamic_castfriendoperatorsizeoftryvolatileclasselsegotoprivatestatictypedefwchar_tconstenumifprotectedstatic_casttypeidwhile15C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
變量定義的一般格式為:例如:
intsum,area;
floatx,y,z;給變量賦初值的格式如下:2.4.2
變量的定義與賦初值
數(shù)據(jù)類型變量名1,變量名2,…,變量名n;數(shù)據(jù)類型變量名1=初值1,變量名2=初值2,…,變量名n=初值n;例如:
intsum=100;
doublepi=3.1416;
charc1='a',c2='b';16C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
變量定義的l另一種格式為:例如:
intsum(100);
doublepi(3.1416);
charc1('a'),c2('b');
數(shù)據(jù)類型變量名1(初值1),變量名2(初值2),…,變量名n(初值n);2.4常量
常量是指在程序運(yùn)行過(guò)程中,其值不能被改變的量。因此,一個(gè)具體的數(shù)值稱為文字常量。如:i=255;area=r*r*3.14;在程序中直接使用數(shù)值有兩個(gè)問(wèn)題:(1)可讀性差
;
(2)可維護(hù)性差
;
17C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
C++符號(hào)常量的定義形式如下:例如:
#defineMaxChar255#definePI3.142.5.1符號(hào)常量
#define符號(hào)常量名數(shù)值注意:定義符號(hào)常量時(shí)不能用賦值符,#definePI=3.14是錯(cuò)誤的。由于define是預(yù)處理指令,語(yǔ)句不能以分號(hào)結(jié)尾。C++為符號(hào)常量提供了一種新方法,格式為:2.5.2常變量
const數(shù)據(jù)類型符號(hào)常量名=數(shù)值;const可以與數(shù)據(jù)類型說(shuō)明顛倒。用const修飾后,變量的值就不能改變了,實(shí)質(zhì)上是一種“常變量”。18C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
例如:
constshortintMaxChar=255;constfloatPI=3.14;三種常量比較表:
與直接使用文字常量相比,使用符號(hào)常量增強(qiáng)了程序的可讀性,可維護(hù)性。文字常量符號(hào)常量常變量i=255;area=r*r*3.14;#defineMaxChar255#definePI3.14constshortintMaxChar=255;constfloatPI=3.14;
常變量與變量定義的格式相似,使程序保持良好的風(fēng)格。
常變量可以按照不同的需要選擇合適的數(shù)據(jù)類型,節(jié)省內(nèi)存空間,在運(yùn)算式中有明確的類型。注意:
在定義常變量時(shí)一定要賦初值。例如:constfloatPI;//錯(cuò)誤,定義時(shí)沒(méi)有給出初值常變量不是變量,在程序中間不能更新其值。例如:PI=3.14159;//錯(cuò)誤!常量不能被改變19C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
運(yùn)算符是描述對(duì)數(shù)據(jù)進(jìn)行的運(yùn)算(操作)、體現(xiàn)數(shù)據(jù)之間運(yùn)算關(guān)系的符號(hào),運(yùn)算符也叫操作符。
表達(dá)式是運(yùn)算符與數(shù)據(jù)連接起來(lái)的表達(dá)運(yùn)算的式子,表達(dá)式也稱運(yùn)算式。
優(yōu)先級(jí)是指表達(dá)式中運(yùn)算符運(yùn)算的順序。當(dāng)一個(gè)表達(dá)式中包含多個(gè)運(yùn)算符時(shí),先進(jìn)行優(yōu)先級(jí)高的運(yùn)算,再進(jìn)行優(yōu)先級(jí)低的運(yùn)算。如果表達(dá)式中出現(xiàn)了多個(gè)相同優(yōu)先級(jí)的運(yùn)算,運(yùn)算順序就要看運(yùn)算符的結(jié)合性了。
結(jié)合性是指操作數(shù)左右兩邊運(yùn)算符的優(yōu)先級(jí)相同時(shí),優(yōu)先和哪個(gè)運(yùn)算符結(jié)合起來(lái),進(jìn)行運(yùn)算。運(yùn)算符的結(jié)合順序有兩種:左結(jié)合和右結(jié)合。2.6.1優(yōu)先級(jí)與結(jié)合性左結(jié)合num1op1num2op2num3(num1op1num2)op2num3
右結(jié)合num1op1num2op2num3num1op1(num2op2num3)
2.6運(yùn)算符與表達(dá)式20C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
基本算術(shù)運(yùn)算符及其含義:優(yōu)先級(jí)運(yùn)算符含義結(jié)合性2+正號(hào)從右向左-負(fù)號(hào)4*乘從左向右/除%取余5+加-減表中優(yōu)先級(jí)數(shù)字小的優(yōu)先級(jí)高(1)
算術(shù)運(yùn)算符的意義、優(yōu)先級(jí)與數(shù)學(xué)中一致:+(正號(hào)),-(負(fù)號(hào))是一元運(yùn)算,優(yōu)先級(jí)高于二元運(yùn)算,*、/、%優(yōu)先級(jí)高于+(加)、-(減)運(yùn)算。例如:a=10;b=5;a+b*-1;得到結(jié)果5(2)%要求兩個(gè)操作數(shù)的值必須是整數(shù)或字符型數(shù)?!安僮鲾?shù)1%操作數(shù)2”計(jì)算結(jié)果是操作數(shù)1被操作數(shù)2除的余數(shù)。當(dāng)兩個(gè)操作數(shù)都是正數(shù)時(shí),結(jié)果為正;如果有一個(gè)(或兩個(gè))操作數(shù)為負(fù),余數(shù)的符號(hào)取決于機(jī)器。21%6//結(jié)果是34%2//結(jié)果是021%-5//機(jī)器相關(guān):結(jié)果為-1或12.6.2算術(shù)運(yùn)算符21C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
基本算術(shù)運(yùn)算符及其含義:2.6.2算術(shù)運(yùn)算符優(yōu)先級(jí)運(yùn)算符含義結(jié)合性2+正號(hào)從右向左-負(fù)號(hào)4*乘從左向右/除%取余5+加-減(3)
當(dāng)/運(yùn)算符用于兩個(gè)整數(shù)相除時(shí),如果商含有小數(shù)部分,將被截掉。如果要進(jìn)行通常意義的除運(yùn)算,則至少應(yīng)保證除數(shù)或被除數(shù)中有一個(gè)是浮點(diǎn)數(shù)或雙精度數(shù)。(4)
在使用算術(shù)運(yùn)算符時(shí),需要注意有關(guān)算術(shù)表達(dá)式求值溢出的處理問(wèn)題;5/4//結(jié)果是14/5//結(jié)果是05/4.0//結(jié)果是1.254.0/5//結(jié)果是0.8shorti=32767,j,k;j=i+1;k=i+2;cout<<"j="<<j<<",k="<<k<<endl;執(zhí)行結(jié)果為:j=-32768,k=-32767注意:在書(shū)寫(xiě)除法運(yùn)算式時(shí),通常將參加運(yùn)算的整數(shù)值后補(bǔ)上小數(shù)點(diǎn)與0作為雙精度(double)常量參加運(yùn)算。22C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
關(guān)系運(yùn)算符及其含義:2.6.3關(guān)系運(yùn)算符(1)若關(guān)系運(yùn)算符的計(jì)算結(jié)果繼續(xù)用在表達(dá)式中,true與false分別當(dāng)成了1與0。。(2)關(guān)系運(yùn)算符的操作數(shù)可以是任何基本數(shù)據(jù)類型的數(shù)據(jù),但由于實(shí)數(shù)(float)在計(jì)算機(jī)中只能近似地表示一個(gè)數(shù),所以,一般不能直接進(jìn)行比較。當(dāng)需要對(duì)兩個(gè)實(shí)數(shù)進(jìn)行==、!=比較時(shí),通常的做法是指定一個(gè)極小的精度值,若兩實(shí)數(shù)的差在這個(gè)精度之內(nèi)時(shí),就認(rèn)為兩實(shí)數(shù)相等,否則為不等。x==y應(yīng)寫(xiě)成fabs(x-y)<1e-6x!=y應(yīng)寫(xiě)成fabs(x-y)>1e-6//fabs(x)求double類型數(shù)x的絕對(duì)值優(yōu)先級(jí)運(yùn)算符含義結(jié)合性7>大于從左向右<小于>=大于等于<=小于等于8==等于!=不等于(3)關(guān)系表達(dá)式就是由關(guān)系運(yùn)算符將兩個(gè)操作數(shù)連接起來(lái)的式子。這兩個(gè)操作數(shù)可以為常量、變量、算術(shù)表達(dá)式等。例如:a+b>c+d'a'<'b'+'c'a>b>=c>da==b<c注意:關(guān)系運(yùn)算符的比較運(yùn)算是由兩個(gè)等號(hào)組成,不要誤寫(xiě)為賦值運(yùn)算符=。23C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
邏輯運(yùn)算符操作數(shù)類型為bool型,返回類型亦為bool型。2.6.4邏輯運(yùn)算符
優(yōu)先級(jí)運(yùn)算符含義結(jié)合性2!取反從右向左12&&與從左向右13||或(1)邏輯運(yùn)算符的操作數(shù)為bool型,當(dāng)為其它數(shù)據(jù)類型時(shí),將它轉(zhuǎn)換成bool值參加運(yùn)算。(2)C++對(duì)于二元運(yùn)算符&&和||可進(jìn)行短路求值(short-circuitevaluation)。由于&&與||表達(dá)式按從左到右的順序進(jìn)行計(jì)算,如果根據(jù)左邊的計(jì)算結(jié)果能得到整個(gè)邏輯表達(dá)式的結(jié)果,右邊的計(jì)算就不需要進(jìn)行了,該規(guī)則叫短路求值。設(shè)a=10,b=5,c=-3則!a的值為0;a&&b的值為1;a||b的值為1;(3)當(dāng)表示的邏輯關(guān)系比較復(fù)雜時(shí),用小括號(hào)將操作數(shù)括起來(lái)是一種比較好的方法。例如:(num!=0)&&(1/num>0.5)邏輯運(yùn)算符列表邏輯運(yùn)算的功能表pq!pp&&qp||q00100010110001111124C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
位運(yùn)算分為移位運(yùn)算與按位邏輯運(yùn)算2.6.5位運(yùn)算符
(1)運(yùn)算符~將操作數(shù)逐位取反,即將原來(lái)為1的位變?yōu)?,原來(lái)為0的位變?yōu)?。例如,按位求反~c的結(jié)果為01111000。(2)運(yùn)算符&將兩個(gè)操作數(shù)對(duì)應(yīng)位逐一地進(jìn)行邏輯與運(yùn)算。與運(yùn)算的規(guī)則為“見(jiàn)零則零”,即兩個(gè)數(shù)中只要有一個(gè)為0,則其邏輯與的結(jié)果就為0。(3)運(yùn)算符|將兩個(gè)操作數(shù)對(duì)應(yīng)位逐一地進(jìn)行邏輯或運(yùn)算。邏輯或運(yùn)算的規(guī)則為“見(jiàn)壹則壹”,即兩個(gè)數(shù)中只要有一個(gè)為1,則其邏輯或的結(jié)果就為1。優(yōu)先級(jí)運(yùn)算符含義結(jié)合性2~位求反從右向左6<<左移從左向右>>右移9&位與10^位異或11|位或unsignedcharc(135),d(43);二進(jìn)制表示分別為10000111和
00101011。(4)運(yùn)算符^將兩個(gè)操作數(shù)對(duì)應(yīng)位逐一地進(jìn)行邏輯異或運(yùn)算。邏輯異或運(yùn)算的規(guī)則為“同則零,異則壹”,即兩個(gè)數(shù)只要不同,則其邏輯異或的結(jié)果就為1;否則為0。25C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.5位運(yùn)算符
(5)運(yùn)算符<<將左操作數(shù)向左移動(dòng)其右操作數(shù)所指定的位數(shù),移出的位補(bǔ)以0。將一個(gè)數(shù)左移一位,相當(dāng)將該數(shù)乘以2;左移兩位,相當(dāng)將該數(shù)乘以4。一般說(shuō)來(lái),將一個(gè)數(shù)左移n位,就相當(dāng)將該數(shù)乘以2n。所以,在程序中,常用左移位來(lái)進(jìn)行快速的乘法運(yùn)算。(6)>>將左操作數(shù)向右移動(dòng)其右操作數(shù)所要求的位數(shù),移出的位補(bǔ)以0。將一個(gè)數(shù)右移n位,相當(dāng)于將該數(shù)除以2n。這與整型和字符型數(shù)據(jù)的除法運(yùn)算完全一致,所以在程序中常用右移位來(lái)進(jìn)行快速的除法運(yùn)算。注意:位運(yùn)算符是對(duì)其操作數(shù)按其二進(jìn)制形式逐位地進(jìn)行邏輯運(yùn)算或移位操作的,運(yùn)算對(duì)象為bool、char、short、int等類型數(shù),但不得是實(shí)型數(shù)據(jù)。用移位方法進(jìn)行乘法運(yùn)算時(shí),同樣要注意溢出問(wèn)題。按位左移運(yùn)算符與插入運(yùn)算符同形(同一個(gè)符號(hào)),按位右移運(yùn)算符與提取運(yùn)算符同形。那么編譯器是如何來(lái)區(qū)分cout<<7<<3;是將7左移3位,還是向屏幕上輸出7、3呢?編譯器將把該表達(dá)式解釋成向屏幕輸出7、3,這是由于cout是C++語(yǔ)言中預(yù)定義的輸出流類的對(duì)象,在該對(duì)象所屬的類中,對(duì)運(yùn)算符<<所執(zhí)行的操作進(jìn)行了新的定義。對(duì)于按位右移與提取運(yùn)算符,編譯器也是按此原則解釋。26C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
賦值運(yùn)算符表2.6.6賦值運(yùn)算符
優(yōu)先級(jí)運(yùn)算符含義舉例結(jié)合性15=賦值從右向左*=乘賦值a*=b等價(jià)于a=a*b/=除賦值a/=b等價(jià)于a=a/b%=取余賦值a%=b等價(jià)于a=a%b+=加賦值a+=b等價(jià)于a=a+b-=減賦值a-=b等價(jià)于a=a-b<<=左移賦值a<<=b等價(jià)于a=a<<b>>=右移賦值a>>=b等價(jià)于a=a>>b&=位與賦值a&=b等價(jià)于a=a&b^=位異或賦值a^=b等價(jià)于a=a^b|=位或賦值a|=b等價(jià)于a=a|b27C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.6賦值運(yùn)算符
簡(jiǎn)單賦值運(yùn)算符的使用格式:
左表達(dá)式=右表達(dá)式其功能是將右表達(dá)式(右操作數(shù))的值放到左表達(dá)式表示的內(nèi)存單元中,因此左表達(dá)式一般是變量或表示某個(gè)地址的表達(dá)式,稱為左值,在運(yùn)算中作為地址使用。右表達(dá)式在賦值運(yùn)算中是取其值使用,稱為右值。所有賦值運(yùn)算左表達(dá)式都要求是左值。28C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.6賦值運(yùn)算符
復(fù)合賦值運(yùn)算符的運(yùn)算過(guò)程為:先將兩個(gè)表達(dá)式做運(yùn)算符所規(guī)定的算術(shù)或位運(yùn)算,然后將運(yùn)算的結(jié)果賦給左表達(dá)式。左表達(dá)式@=
右表達(dá)式;左表達(dá)式=(左表達(dá)式@右表達(dá)式);例如:設(shè)a和b的值分別為2和6,復(fù)合賦值運(yùn)算式b*=a+3的計(jì)算過(guò)程為:①先計(jì)算復(fù)合賦值運(yùn)算符的右表達(dá)式的值,即a+3的和,結(jié)果為5;②然后,做復(fù)合賦值運(yùn)算符所規(guī)定的算術(shù)運(yùn)算,即求b與上述結(jié)果的乘積,結(jié)果為30;③最后進(jìn)行賦值運(yùn)算,將上述運(yùn)算結(jié)果賦給復(fù)合賦值運(yùn)算符的左操作數(shù)b。同時(shí),整個(gè)表達(dá)式的值也為30。29C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.6賦值運(yùn)算符
關(guān)于賦值運(yùn)算符的說(shuō)明:
(1)
用賦值運(yùn)算符=連接起來(lái)的表達(dá)式叫做賦值表達(dá)式。賦值表達(dá)式是C++語(yǔ)言(包括C語(yǔ)言)中所特有的,其它大多數(shù)語(yǔ)言中,只有賦值語(yǔ)句而沒(méi)有賦值表達(dá)式這一語(yǔ)法要素。賦值表達(dá)式仍可作為操作數(shù)進(jìn)行運(yùn)算,賦值表達(dá)式的類型為左邊變量的類型,其返回值為賦值后左邊變量的值。floatx;x=2.6;//返回值為2.6,類型為float;
(2)復(fù)合賦值運(yùn)算符所表示的表達(dá)式不僅比一般賦值運(yùn)算符表示的表達(dá)式簡(jiǎn)練,而且所生成的目標(biāo)代碼也較少,因此,C++語(yǔ)言程序中應(yīng)盡量采用復(fù)合賦值運(yùn)算符的形式表示。
(3)在C++中還可以連續(xù)賦值,賦值運(yùn)算符具有右結(jié)合性.x=y=2.6;//它相當(dāng)于:x=(y=2.6);a=b=3+8;//先做3+8,然后將11賦給b,再將b的值11賦給a。c=b*=a+3;//運(yùn)算分解為①a+3②b=b*(a+3)③c=b30C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.7++、--運(yùn)算符
這兩個(gè)運(yùn)算符都前置和后置兩種形式。所謂前置是指運(yùn)算符在操作數(shù)的前面,后置是指運(yùn)算符在操作數(shù)的后面。例如:
i++;
//++后置
--j;
//--前置優(yōu)先級(jí)運(yùn)算符含義結(jié)合性1++后置自增從左向右--后置自減2++前置自增從右向左--前置自減(1)都是使操作數(shù)的值增1或減1,但對(duì)表達(dá)式的值的影響卻完全不同。前置形式
inti=5;x=++i;y=i;//i
先加1(增值)后再賦給x(i=6,x=6,y=6)inti=5;++i;x=y=i;//(i=6,y=6,x=6)后置形式
inti=5;x=i++;y=i;//i
賦給后再加1(x=5,i=6,y=6)inti=5;
i++;
x=y=i;
//(i=6,y=6,x=6)(2)
由于++、--運(yùn)算符內(nèi)含了賦值運(yùn)算,所以運(yùn)算對(duì)象只能左值,不能作用于常量和表達(dá)式。5++、(x+y)++都是不合法的。前綴運(yùn)算是先變化后運(yùn)算,后綴運(yùn)算是先運(yùn)算后變化。
31C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.8其它運(yùn)算符
1.條件運(yùn)算符
條件運(yùn)算符也稱三目運(yùn)算符,是C++中唯一的一個(gè)三目運(yùn)算符。格式為:
其中,d1,d2和d3分別是三個(gè)表達(dá)式。該運(yùn)算符的功能是:①先計(jì)算d1;②如果d1的值為true(非0),返回d2的值作為整個(gè)條件運(yùn)算表達(dá)式的值;③如果d1的值為false(0),返回d3的值作為為整個(gè)條件運(yùn)算表達(dá)式的值。條件運(yùn)算表達(dá)式的返回類型將是d2和d3這兩個(gè)表達(dá)式中類型高(表示的數(shù)值范圍大)的那種類型。例如:
a=(x>y?12:10.0);//若x>y(x>y的值為true),將12賦給a;否則a=10.0。條件運(yùn)算表達(dá)式的返回類型為10.0的類型double。
x?y=a+10:y=3*a-1;//若x非0則把a(bǔ)+10的值賦給y,否則把3*a-1的值賦y
d1?d2:d332C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.8其它運(yùn)算符
2.逗號(hào)運(yùn)算符
逗號(hào)可作分隔符使用,將若干變量隔開(kāi),如:inta,b,c;一般形式為:
逗號(hào)表達(dá)式的求解過(guò)程為:先求表達(dá)式1的值,再求表達(dá)式2的值……,最后求表達(dá)式n的值。整個(gè)逗號(hào)表達(dá)式結(jié)果的值是最后一個(gè)表達(dá)式n的值。它的類型也是最后一個(gè)表達(dá)式的類型。
例如:
a=a+b,b=b*c,c=c-a;
設(shè)a=3,b=5,c=7,該表達(dá)式依次計(jì)算出a的值為8、b的值為35、c的值為-1、且整個(gè)表達(dá)式的值為-1。更進(jìn)一步:
x=(a=a+b,b=b*c,c=c-a);//x的值為-1。
表達(dá)式1,表達(dá)式2,……,表達(dá)式n;逗號(hào)運(yùn)算符還用在只允許出現(xiàn)一個(gè)表達(dá)式而又需要多個(gè)表達(dá)式才能完成運(yùn)算的地方,用它將幾個(gè)表達(dá)式連起來(lái)組成一個(gè)逗號(hào)表達(dá)式。在C++語(yǔ)言所有運(yùn)算符中,逗號(hào)表達(dá)式的優(yōu)先級(jí)最低。33C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.8其它運(yùn)算符
3.求字節(jié)運(yùn)算符sizeofsizeof運(yùn)算符用來(lái)求得某種類型或某個(gè)變量所占字節(jié)數(shù)(長(zhǎng)度)。它是一個(gè)單目運(yùn)算符,用在類型說(shuō)明符或變量名的左邊,該運(yùn)算符的使用形式如下:
例如:inta,b[10];
sizeof(類型說(shuō)明符|變量名|常量)
在32位系統(tǒng)下,表達(dá)式sizeof(a)的值應(yīng)該為4,與sizeof(int)的值相等;同樣,sizeof(b)的值為40,它是數(shù)組b的所有元素所占的總內(nèi)存字節(jié)數(shù);sizeof(3.1)的值為8,即雙精度數(shù)的長(zhǎng)度。(1)下標(biāo)運(yùn)算符
[]。4.成員運(yùn)算符
(2)取結(jié)構(gòu)或聯(lián)合變量成員運(yùn)算符.(3)
通過(guò)指針取結(jié)構(gòu)或聯(lián)合體成員運(yùn)算符->34C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.6.8其它運(yùn)算符
5.取地址運(yùn)算符&
該運(yùn)算符用來(lái)獲取某個(gè)變量的內(nèi)存單元地址值,格式如下:
&變量名
例如:
inta;&a表示取變量a的地址值,即是變量a在內(nèi)存中被分配的內(nèi)存地址值。6.取指針內(nèi)容運(yùn)算符*
取指針內(nèi)容運(yùn)算符是一個(gè)單目運(yùn)算符,用來(lái)間接地獲取某指針變量指向內(nèi)存單元的值。例如:
inta=5;
int*p=&a;變量a標(biāo)識(shí)的內(nèi)存單元中存放的值為5,指針變量p指向變量a,將該運(yùn)算符作用于p(即*p),表示取p指向的內(nèi)存單元的內(nèi)容,p指向的內(nèi)存單元為變量a。因此,*p取出a存放于內(nèi)存單元的值5。35C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
7.括號(hào)運(yùn)算符
該運(yùn)算符是用來(lái)改變?cè)瓉?lái)的優(yōu)先級(jí)的,括號(hào)運(yùn)算符的優(yōu)先級(jí)最高。括號(hào)運(yùn)算符可以包含使用(即嵌套),即在括號(hào)內(nèi)還可以使用括號(hào),在出現(xiàn)多重括號(hào)時(shí),應(yīng)該先作最內(nèi)層括號(hào),按從里向外的順序進(jìn)行。優(yōu)先級(jí)運(yùn)算符含義結(jié)合性1()括號(hào)從左向右[]數(shù)組下標(biāo).通過(guò)對(duì)象取成員->通過(guò)指針取成員2&取地址從右向左*間接(通過(guò)指針)訪問(wèn)sizeof計(jì)算內(nèi)存字節(jié)數(shù)14?:三元條件運(yùn)算從右向左16,逗號(hào)從左向右其他其它運(yùn)算符表36C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
(1)運(yùn)算符的優(yōu)先級(jí)按單目、雙目、三目、賦值依次降低。8.運(yùn)算符優(yōu)先級(jí)的規(guī)律
單目運(yùn)算是右結(jié)合的,旨在與右邊的數(shù)結(jié)合在一起形成一個(gè)整體,因此優(yōu)先級(jí)高。算術(shù)運(yùn)算中的+(正)、-(負(fù))、++、--、邏輯運(yùn)算中的取非!,按位運(yùn)算中的取反~從各類運(yùn)算中提取到單目運(yùn)算中。賦值運(yùn)算之所以優(yōu)先級(jí)低且為右結(jié)合,是因?yàn)橐疫叺谋磉_(dá)式計(jì)算完后才賦值給左邊的變量。移位運(yùn)算是一種高效的算術(shù)運(yùn)算,看作算術(shù)運(yùn)算的補(bǔ)充,優(yōu)先級(jí)在算術(shù)運(yùn)算后。算術(shù)運(yùn)算后的結(jié)果要進(jìn)行比較,因此關(guān)系運(yùn)算的優(yōu)先級(jí)在算術(shù)、移位后。關(guān)系運(yùn)算得出的邏輯值要進(jìn)行運(yùn)算,所以邏輯運(yùn)算優(yōu)先級(jí)在關(guān)系運(yùn)算后。
(2)算術(shù)、移位、關(guān)系、按位、邏輯運(yùn)算的優(yōu)先級(jí)依次降低。
37C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
【例2-2】演示算術(shù)運(yùn)算表達(dá)式的用法。
2.6.9表達(dá)式的使用
1234567891011121314151617/********************************p2_2.cpp**演示算術(shù)運(yùn)算表達(dá)式*********************************/#include<iostream>usingnamespacestd;voidmain(){ inta; a=7*2+-3%5-4/3; floatb; b=510+3.2e3-5.6/0.03; cout<<a<<"\t"<<b<<endl; intm(3),n(4); a=m++---n; cout<<a<<"\t"<<m<<"\t"<<n<<endl;}運(yùn)行結(jié)果103523.33043
38C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
【例2-3】演示邏輯運(yùn)算表達(dá)式的用法。2.6.9表達(dá)式的使用
1234567891011121314151617/********************************p2_3.cpp**演示邏輯運(yùn)算表達(dá)式*********************************/#include<iostream>usingnamespacestd;voidmain(){intx,y,z; x=y=z=1; --x&&++y&&++z; cout<<x<<'\t'<<y<<'\t'<<z<<endl; ++x&&++y&&++z; cout<<x<<'\t'<<y<<'\t'<<z<<endl; ++x&&y--||++z; cout<<x<<'\t'<<y<<'\t'<<z<<endl;}運(yùn)行結(jié)果011122212
39C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
【例2-3】演示邏輯運(yùn)算表達(dá)式的用法。2.6.9表達(dá)式的使用
1234567891011121314151617/********************************p2_4.cpp**演示條件表達(dá)式*********************************/#include<iostream>usingnamespacestd;voidmain(){ inti=10,j=20,k; k=(i<j)?i:j; cout<<i<<'\t'<<j<<'\t'<<k<<endl; k=i-j?i+j:i-3?j:i; cout<<i<<'\t'<<j<<'\t'<<k<<endl;}運(yùn)行結(jié)果102010102030
40C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
1.自動(dòng)轉(zhuǎn)換
C++語(yǔ)言支持不同數(shù)據(jù)類型的數(shù)據(jù)之間的混合運(yùn)算。在對(duì)這樣的表達(dá)式求值時(shí),需要對(duì)其中的一些操作數(shù)進(jìn)行類型轉(zhuǎn)換。表達(dá)式中的類型轉(zhuǎn)換有兩種方式:自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。
各種類型的高低順序如下所示:2.7類型轉(zhuǎn)換
(1)
若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算,轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低,且運(yùn)算的結(jié)果(即表達(dá)式的值)的類型是運(yùn)算式的最終類型。
(2)所有的浮點(diǎn)型運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。41C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.7類型轉(zhuǎn)換
(3)
bool、char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。
(4)邏輯運(yùn)算符要求參與運(yùn)算的操作數(shù)必須是bool型,如果操作數(shù)是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將非0數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為false。
(5)位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。
(6)在賦值運(yùn)算中,賦值號(hào)兩邊的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長(zhǎng)度比左邊長(zhǎng)時(shí),可能丟失一部分?jǐn)?shù)據(jù),或降低精度。floatpi=3.1;//降低了精度f(wàn)loatf=3.5;//未降低精度
(7)將signed型的整型變成較長(zhǎng)的signed型的整型,unsigned型變成較長(zhǎng)的整型時(shí),原值以及正負(fù)符號(hào)不變。inta=-2;longb=a;//b的值仍為-242C++語(yǔ)言程序設(shè)計(jì)教程第1章C++編程簡(jiǎn)介C++語(yǔ)言程序設(shè)計(jì)教程第2章數(shù)據(jù)類型與表達(dá)式
2.7類型轉(zhuǎn)換
(8)將unsigned型和同長(zhǎng)度的signed型互變時(shí),其值根據(jù)自身所屬范圍發(fā)生適當(dāng)?shù)淖兓?。unsignedshorta=65535;
shortintb=a;//b的值變成-1shortinta=-2;
unsignedshortb=a;//b的值變成65534假設(shè)定義變量為:charc=1;floatf=3.1;表達(dá)式('3'>=f)+
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家紡企業(yè)社會(huì)責(zé)任報(bào)告編寫(xiě)考核試卷
- 面門(mén)出租合同范本
- 電影合同范本4篇
- 煤炭居間費(fèi)合同范本
- 小學(xué)生頒獎(jiǎng)視頻模板課件
- 基于大數(shù)據(jù)的智能種植管理平臺(tái)構(gòu)建
- 人才派遣與招聘協(xié)議
- 日常照護(hù)培訓(xùn)課件
- 農(nóng)業(yè)生產(chǎn)安全防范指南
- 互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)安全防護(hù)策略
- 靜脈藥物配置中心課件
- DB11T 852-2019 有限空間作業(yè)安全技術(shù)規(guī)范
- 材料化學(xué)合成與制備技術(shù)
- 金屬工藝學(xué)(鑄造)課件
- DB23∕T 343-2003 國(guó)有林區(qū)更新造林技術(shù)規(guī)程
- 醫(yī)療廢物管理組織機(jī)構(gòu)架構(gòu)圖
- cjj/t135-2009《透水水泥混凝土路面技術(shù)規(guī)程》
- 短時(shí)耐受電流
- 社保人事專員績(jī)效考核表
- 上海世博會(huì)對(duì)上海城市競(jìng)爭(zhēng)力影響的評(píng)估模型
- 河南書(shū)法家協(xié)會(huì)入會(huì)申請(qǐng)表
評(píng)論
0/150
提交評(píng)論