數(shù)據(jù)類型和表達(dá)式_第1頁
數(shù)據(jù)類型和表達(dá)式_第2頁
數(shù)據(jù)類型和表達(dá)式_第3頁
數(shù)據(jù)類型和表達(dá)式_第4頁
數(shù)據(jù)類型和表達(dá)式_第5頁
已閱讀5頁,還剩143頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(C++)與實(shí)踐

數(shù)據(jù)類型和表達(dá)式2/6/20231東華大學(xué)計算機(jī)學(xué)院主要內(nèi)容數(shù)據(jù)類型常量與變量基本數(shù)據(jù)類型運(yùn)算符與表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換數(shù)組自定義數(shù)據(jù)類型2/6/20232東華大學(xué)計算機(jī)學(xué)院數(shù)據(jù)類型數(shù)據(jù)類型:指定義了一組數(shù)據(jù)以及定義在這一組數(shù)據(jù)的操作,它是程序中最基本的元素。類型相同的數(shù)據(jù)有相同的表示形式、存儲格式以及相關(guān)的操作。程序中使用的所有數(shù)據(jù)都必定屬于某一種數(shù)據(jù)類型。2/6/20233東華大學(xué)計算機(jī)學(xué)院C++的數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型基本類型空類型(無值類型)void構(gòu)造類型類類型class指針類型整型int實(shí)型(浮點(diǎn)型)字符型邏輯型bool結(jié)構(gòu)類型struct數(shù)組類型枚舉型類型enum聯(lián)合型類型union單精度型float雙精度型double單字符型char寬字符型w-char自定義類型2/6/20234東華大學(xué)計算機(jī)學(xué)院基本類型的種類基本類型有4種:整型(int);浮點(diǎn)型(float、double、longdouble);字符型(char);布爾型(bool)。數(shù)據(jù)類型2/6/20235東華大學(xué)計算機(jī)學(xué)院基本類型的種類整型數(shù)在計算機(jī)內(nèi)部一般采用定點(diǎn)表示法,用于存儲整型量。(如123,-7等),存儲整數(shù)的位數(shù)依機(jī)器的不同而異。浮點(diǎn)數(shù)和整數(shù)不同的地方是浮點(diǎn)數(shù)采用的是浮點(diǎn)表示法,也就是說,浮點(diǎn)數(shù)的小數(shù)點(diǎn)的位置不同,給出的精度也不相同。字符類型表示單個字符,一個字符用一個字節(jié)存儲。布爾類型,也稱邏輯類型,表示表達(dá)式真和假。數(shù)據(jù)類型2/6/20236東華大學(xué)計算機(jī)學(xué)院基本類型圖示NameDescriptionSize*Range*charCharacterorsmallinteger.1bytesigned:-128to127

unsigned:0to255shortint(short)ShortInteger.2bytessigned:-32768to32767

unsigned:0to65535intInteger.4bytessigned:-2147483648to2147483647

unsigned:0to4294967295longint(long)Longinteger.4bytessigned:-2147483648to2147483647

unsigned:0to4294967295boolBooleanvalue.1bytetrueorfalsefloatFloatingpointnumber.4bytes3.4e+/-38(7digits)doubleDoubleprecisionfloatingpointnumber.8bytes1.7e+/-308(15digits)longdoubleLongdoubleprecisionfloatingpointnumber.8bytes1.7e+/-308(15digits)wchar_tWidecharacter.2bytes1widecharacter

*Size和Range依賴于系統(tǒng)的體系結(jié)構(gòu),表中數(shù)據(jù)所依賴的是32bit系統(tǒng)。數(shù)據(jù)類型2/6/20237東華大學(xué)計算機(jī)學(xué)院空類型空類型void用于顯示說明一個函數(shù)不返回任何值。還可以說明指向void類型的指針,說明以后,這個指針就可指向各種不同類型的數(shù)據(jù)對象。數(shù)據(jù)類型2/6/20238東華大學(xué)計算機(jī)學(xué)院構(gòu)造類型構(gòu)造類型又稱為組合類型,它是由基本類型按照某種規(guī)則組合而成的。構(gòu)造類型有4種:數(shù)組([]);結(jié)構(gòu)(struct);聯(lián)合(union);枚舉(enum)。自定義數(shù)據(jù)類型數(shù)據(jù)類型2/6/20239東華大學(xué)計算機(jī)學(xué)院構(gòu)造類型數(shù)組:是由具有相同數(shù)據(jù)類型的元素組成的集合。結(jié)構(gòu):是由不同的數(shù)據(jù)類型構(gòu)成的一種混合的數(shù)據(jù)結(jié)構(gòu),構(gòu)成結(jié)構(gòu)體的成員的數(shù)據(jù)類型一般不同,并且在內(nèi)存中分別占據(jù)不同的存儲單元。聯(lián)合:是類似于結(jié)構(gòu)體的一種構(gòu)造類型,與結(jié)構(gòu)體不同的是構(gòu)成共同體的數(shù)據(jù)成員共用同一段內(nèi)存單元。枚舉:是將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。數(shù)據(jù)類型2/6/202310東華大學(xué)計算機(jī)學(xué)院指針類型指針類型變量用于存儲另一變量的地址,而不能用來存放基本類型的數(shù)據(jù)。它在內(nèi)存中占據(jù)一個存儲單元。數(shù)據(jù)類型2/6/202311東華大學(xué)計算機(jī)學(xué)院類類型類是體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計的最基本特征,也是體現(xiàn)C++與C最大的不同之處。類是一個數(shù)據(jù)類型,它定義的是一種對象類型,由數(shù)據(jù)和方法組成,描述了屬于該類型的所有對象的性質(zhì)。數(shù)據(jù)類型2/6/202312東華大學(xué)計算機(jī)學(xué)院常量常量:在程序運(yùn)行過程中其值不能改變的量。C++支持5種類型的常量:浮點(diǎn)型、整型、字符型、布爾型和枚舉型。常量在程序中一般以自身的存在形式體現(xiàn)其值。常量具有類型屬性,類型決定了各種常量在內(nèi)存中占據(jù)存儲空間的大小。常量與變量2/6/202313東華大學(xué)計算機(jī)學(xué)院變量變量:指程序在運(yùn)行時其值可改變的量。每個變量由一個變量名惟一標(biāo)識。每個變量又具有一個特定的數(shù)據(jù)類型。不同類型的變量在內(nèi)存中占有存儲單元的個數(shù)不同。常量與變量2/6/202314東華大學(xué)計算機(jī)學(xué)院變量名的命名變量名的命名要遵守以下規(guī)則:不能是C++保留字。第一個字符必須是字母或下劃線,中間不能有空格。變量名除了使用26個英文大小寫字母和數(shù)字外,只能使用下劃線。一般不要超過31個字符。變量名不要與C++中的庫函數(shù)名、類名和對象名相同。常量與變量2/6/202315東華大學(xué)計算機(jī)學(xué)院C++的標(biāo)準(zhǔn)保留字asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatoroverloadprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchthistemplatethrowtrytypedefunionunsignedvirtualvoidvolatilewhile常量與變量2/6/202316東華大學(xué)計算機(jī)學(xué)院變量的定義和說明C++中,變量使用之前一定要定義或說明,變量定義的格式一般為:

[修飾符]類型變量名;[//注釋]其中:類型指出變量所存放的數(shù)據(jù)的類型;變量名是任意合法的變量名;注釋指明該變量的含義和用途;修飾符進(jìn)一步描述了變量的使用方式。修飾符和注釋是任選的,可以沒有。常量與變量2/6/202317東華大學(xué)計算機(jī)學(xué)院變量的定義和說明多個同一類型的變量可以在一行中定義,中間用逗號隔開,也可以分別定義。例如:inta,b,c; //定義3個整型變量a,b,c和 inta; //定義整型變量a intb; //定義整型變量b intc; //定義整型變量c二者等價。常量與變量2/6/202318東華大學(xué)計算機(jī)學(xué)院變量初始化變量初始化一般采用兩種方式。第一種方式:在定義變量時可以給變量賦一個初值,例如: inta=3; floatb=3.4; constintc=5;第二種方式:先定義變量,然后通過賦值語句使變量初始化,例如: inta; a=3;常量與變量2/6/202319東華大學(xué)計算機(jī)學(xué)院變量聲明例:unsignedshortintNumberOfSisters;C++默認(rèn)是signed(char除外)例:signedintMyAccountBalance;與intMyAccountBalance;是等價的??梢栽诔绦驂K中的任意位置定義局部變量。常量與變量2/6/202320東華大學(xué)計算機(jī)學(xué)院#include<iostream>usingnamespacestd;voidmain(){constintPRICE=30;

intnum,total;

floatv,r,h;

num=10;

total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}常量變量變量先聲明后使用符號常量常量與變量2/6/202321東華大學(xué)計算機(jī)學(xué)院#include<iostream>usingnamespacestd;voidmain(){constintPRICE=30;

intnum,total;floatv,r,h;

num=10;total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}整型常量shortunsignedshort2字節(jié)intunsignedint

4字節(jié)longunsignedlong4字節(jié)整型變量整型變量聲明整型數(shù)據(jù)基本數(shù)據(jù)類型2/6/202322東華大學(xué)計算機(jī)學(xué)院整型數(shù)據(jù)類型說明字節(jié)*范圍*short[int]短整型2-32768~32767signedshort[int]有符號短整型2-32768~32767unsignedshort[int]無符號短整型20~65535int整型4-2147483648~2147483647signed[int]有符號整型4-2147483648~2147483647unsigned[int]無符號整型40~4294967295long[int]長整型4-2147483648~2147483647signedlong[int]有符號長整型4-2147483648~2147483647unsignedlong[int]無符號長整型40~4294967295

*字節(jié)和范圍依賴于系統(tǒng)的體系結(jié)構(gòu),表中數(shù)據(jù)所依賴的是32bit系統(tǒng)?;緮?shù)據(jù)類型2/6/202323東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)#include<iostream>usingnamespacestd;voidmain(){constintPRICE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;cout<<total<<endl;

r=2.5;

h=3.2;

v=3.14159*r*r*h;cout<<v<<endl;}浮點(diǎn)型常量float4字節(jié)3.4×10±387位有效數(shù)字double8字節(jié)1.7×10±30815位有效數(shù)字longdouble8字節(jié)1.7×10±30815位有效數(shù)字浮點(diǎn)型變量默認(rèn)為double型后綴F(或f)為float型后綴L(或l)為longdouble型基本數(shù)據(jù)類型2/6/202324東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)常用示數(shù)方式:[+|-]Digits.Digits[F|f|L|l]基本數(shù)據(jù)類型2/6/202325東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)常用示數(shù)方式:[+|-]Digits.Digits[F|f|L|l]數(shù)字串基本數(shù)據(jù)類型2/6/202326東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)常用示數(shù)方式:[+|-]Digits.Digits[F|f|L|l]只允許省略其中一個數(shù)字串基本數(shù)據(jù)類型2/6/202327東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)常用示數(shù)方式:[+|-]Digits.Digits[

F

|

f|

L

|l

]可選的類型說明符基本數(shù)據(jù)類型2/6/202328東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)常用示數(shù)方式:[+|-]Digits.Digits[F|f|L|l]例如: -2.343.1416L29.00f.230.23基本數(shù)據(jù)類型2/6/202329東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l]基本數(shù)據(jù)類型2/6/202330東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]

Digits.Digits

[Exponent][F|f|L|l]尾數(shù),數(shù)字串基本數(shù)據(jù)類型2/6/202331東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]

Digits.Digits

[Exponent][F|f|L|l]有指數(shù)部分時不能省略尾數(shù)部分基本數(shù)據(jù)類型2/6/202332東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l]可選擇的指數(shù)部分基本數(shù)據(jù)類型2/6/202333東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l]指數(shù)部分的表示形式:(e|E)[+|-]Digits基本數(shù)據(jù)類型2/6/202334東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l](e|

E

)[+|-]Digits以字母e或E開始指數(shù)部分的表示形式:基本數(shù)據(jù)類型2/6/202335東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l](e|E)[

+

|-

]Digits可選符號指數(shù)部分的表示形式:基本數(shù)據(jù)類型2/6/202336東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l](e|E)[+|-]

Digits整數(shù)數(shù)字串指數(shù)部分的表示形式:基本數(shù)據(jù)類型2/6/202337東華大學(xué)計算機(jī)學(xué)院浮點(diǎn)型數(shù)據(jù)科學(xué)示數(shù)方式:[+|-]Digits.Digits[Exponent][F|f|L|l](e|E)[+|-]Digits例如: 1.23E100.23E-445.e+23-23.68E12 1.23E10F0.23E-4f45.e+23L-23.68E12L指數(shù)部分的表示形式:基本數(shù)據(jù)類型2/6/202338東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符常量:單引號括起來的一個字符,如:'a','D','?','$'字符變量:用來存放字符常量

例:charc1,c2;

c1='a';

c2='A';基本數(shù)據(jù)類型2/6/202339東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。例如:

'A''4'','''''空格符空字符基本數(shù)據(jù)類型2/6/202340東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。

例如:

'a'<'b'

'0'>'2'

'B'+1 '2'+1基本數(shù)據(jù)類型2/6/202341東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。

例如:

'a'<'b'

'0'>'2'

'B'+1 '2'+1結(jié)果為1(邏輯真)基本數(shù)據(jù)類型2/6/202342東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。

例如:

'a'<'b'

'0'>'2'

'B'+1 '2'+1結(jié)果為0(邏輯假)基本數(shù)據(jù)類型2/6/202343東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。

例如:

'a'<'b'

'0'>'2'

'B'+1 '2'+1結(jié)果為<int,67>基本數(shù)據(jù)類型2/6/202344東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。

例如:

'a'<'b'

'0'>'2'

'B'+1 '2'+1結(jié)果為<int,51>基本數(shù)據(jù)類型2/6/202345東華大學(xué)計算機(jī)學(xué)院字符型數(shù)據(jù)字符數(shù)據(jù)在內(nèi)存中的存儲形式:以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位;C++的字符型數(shù)據(jù)與整型數(shù)據(jù)密切相關(guān),以ASCII值參與運(yùn)算。轉(zhuǎn)義字符:\escape_character

以"\"為前綴,表示改變后面escape_character符號或整數(shù)值的意義,使其成為控制符或字符值?;緮?shù)據(jù)類型2/6/202346東華大學(xué)計算機(jī)學(xué)院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基本數(shù)據(jù)類型2/6/202347東華大學(xué)計算機(jī)學(xué)院轉(zhuǎn)義字符示例#include<iostream>usingnamespacestd;voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}基本數(shù)據(jù)類型2/6/202348東華大學(xué)計算機(jī)學(xué)院轉(zhuǎn)義字符示例#include<iostream>usingnamespacestd;voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}響鈴,等價于\a基本數(shù)據(jù)類型2/6/202349東華大學(xué)計算機(jī)學(xué)院轉(zhuǎn)義字符示例#include<iostream>usingnamespacestd;voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}橫向跳一制表符基本數(shù)據(jù)類型2/6/202350東華大學(xué)計算機(jī)學(xué)院轉(zhuǎn)義字符示例#include<iostream>usingnamespacestd;voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}換行基本數(shù)據(jù)類型2/6/202351東華大學(xué)計算機(jī)學(xué)院轉(zhuǎn)義字符示例#include<iostream>usingnamespacestd;voidmain(){cout<<"\x07operating\tsystem\n";cout<<'\101'<<'\t'<<'A'<<'\012';}字符'A'的ASCII碼,與'A'等價基本數(shù)據(jù)類型2/6/202352東華大學(xué)計算機(jī)學(xué)院布爾型數(shù)據(jù)布爾型變量的說明:例:boolflag;布爾型數(shù)據(jù)的取值:只有false和true兩個值基本數(shù)據(jù)類型2/6/202353東華大學(xué)計算機(jī)學(xué)院運(yùn)算符與表達(dá)式在程序中,表達(dá)式是計算求值的基本單位,它是由運(yùn)算符和運(yùn)算數(shù)組成的式子。運(yùn)算符是表示進(jìn)行某種運(yùn)算的符號。運(yùn)算數(shù)包含常量、變量和函數(shù)等。C++語言的運(yùn)算符按其在表達(dá)式中與運(yùn)算對象的關(guān)系(連接運(yùn)算對象的個數(shù))可分為:單目運(yùn)算(一元運(yùn)算符,只需一個操作數(shù))雙目運(yùn)算(二元運(yùn)算符,需兩個操作數(shù))三目運(yùn)算(三元運(yùn)算符,需三個操作數(shù))運(yùn)算符與表達(dá)式2/6/202354東華大學(xué)計算機(jī)學(xué)院運(yùn)算符單目運(yùn)算符:

運(yùn)算符右操作數(shù)例如: -123 +500雙目運(yùn)算符:

左操作數(shù)運(yùn)算符右操作數(shù)例如: a*3 x>y三目運(yùn)算符:條件運(yùn)算:操作數(shù)1?操作數(shù)2:操作數(shù)3例如: a?b:c運(yùn)算符與表達(dá)式2/6/202355東華大學(xué)計算機(jī)學(xué)院算術(shù)運(yùn)算符+-*/%++--關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符!&&||位運(yùn)算符<<>>~|^&

賦值運(yùn)算符=及擴(kuò)展的復(fù)合運(yùn)算符條件運(yùn)算符?:逗號運(yùn)算符,指針運(yùn)算符*&求字節(jié)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換符類型分量運(yùn)算符.->下標(biāo)運(yùn)算符[]其他()::newdelete運(yùn)算符的種類運(yùn)算符與表達(dá)式2/6/202356東華大學(xué)計算機(jī)學(xué)院運(yùn)算符優(yōu)先級括號++,--,sizeof*,/,%+,-==,!=位運(yùn)算&&||?:賦值運(yùn)算逗號運(yùn)算低高運(yùn)算符與表達(dá)式2/6/202357東華大學(xué)計算機(jī)學(xué)院表達(dá)式表達(dá)式:由數(shù)據(jù)和運(yùn)算符,按求值規(guī)則,表達(dá)一個值的式子。表達(dá)式可以分為:算術(shù)表達(dá)式;邏輯表達(dá)式;賦值表達(dá)式;條件表達(dá)式;逗號表達(dá)式。運(yùn)算符與表達(dá)式2/6/202358東華大學(xué)計算機(jī)學(xué)院算術(shù)運(yùn)算符算術(shù)運(yùn)算符有雙目運(yùn)算和單目運(yùn)算兩種。包括:+加法,或單目求正-減法,或單目求負(fù)*乘法/除法%求模(求余)sizeof求存儲字節(jié)運(yùn)算符與表達(dá)式2/6/202359東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>運(yùn)算符與表達(dá)式2/6/202360東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>簡單截取整數(shù)部分運(yùn)算符與表達(dá)式2/6/202361東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>由編譯器決定運(yùn)算符與表達(dá)式2/6/202362東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>除數(shù)為0,溢出,無值定義運(yùn)算符與表達(dá)式2/6/202363東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>求模(求余數(shù))運(yùn)算符與表達(dá)式2/6/202364東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>除數(shù)為0,無值定義運(yùn)算符與表達(dá)式2/6/202365東華大學(xué)計算機(jī)學(xué)院算術(shù)表達(dá)式算術(shù)表達(dá)式:由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果是算術(shù)值。當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。運(yùn)算例子結(jié)果+2+3;<5,int>5+10;<15,int>-13–4;<9,int>4–7;<-3,int>*3*4;<12,int>5*11;<55,int>/8/2;<4,int>6/4;<1,int>4/5;<0,int>-11/2;<-5,int>或<-6,int>6/0;<undef,int>%10%3;<1,int>23%4;<3,int>5%0;<undef,int>sizeofsizeof(256)<4,int>sizeof(int)<4,int>操作數(shù)可以是常量,變量,類型運(yùn)算符與表達(dá)式2/6/202366東華大學(xué)計算機(jī)學(xué)院除求余%運(yùn)算外,浮點(diǎn)數(shù)可以進(jìn)行各種算術(shù)運(yùn)算。運(yùn)算例子結(jié)果+2.0+.33;<2.33,double>5.1+10.0;<15.1,double>-13.6–4.2;<9.4,double>4.0–7.0;<-3.0,double>*3.0*4.4;<13.2,double>7.5*11.0;<82.5,double>/8.6/2.0;<4.3,double>5.0/4.0;<1.25,double>-11.0/4.0;<-2.75,double>6.0/0.0;<undef,idouble>sizeofsizeof(3.1415)<8,int>sizeof(double)<8,int>當(dāng)雙目運(yùn)算符的兩個操作數(shù)都是整型,結(jié)果值為整型。算術(shù)表達(dá)式運(yùn)算符與表達(dá)式2/6/202367東華大學(xué)計算機(jī)學(xué)院單目算術(shù)運(yùn)算——右結(jié)合單目負(fù)號操作符例如:-23 -12.3單目正號操作符例如: +244 +0.618算術(shù)運(yùn)算符與算術(shù)表達(dá)式運(yùn)算符與表達(dá)式2/6/202368東華大學(xué)計算機(jī)學(xué)院賦值運(yùn)算符(=,Assignation)賦值運(yùn)算符=的一般格式為:變量=表達(dá)式;表示將其右側(cè)的表達(dá)式求出結(jié)果,賦給其左側(cè)的變量。例如:inti;i=3*(4+5); //i的值變?yōu)?7運(yùn)算符與表達(dá)式2/6/202369東華大學(xué)計算機(jī)學(xué)院賦值表達(dá)式賦值表達(dá)式本身的運(yùn)算結(jié)果是右側(cè)表達(dá)式的值,而結(jié)果類型是左側(cè)變量的數(shù)據(jù)類型。例如:inti=1.2*3; //結(jié)果為3,而不是3.6賦值運(yùn)算符的結(jié)合性是從右至左的,因此,C++程序中可以出現(xiàn)連續(xù)賦值的情況。例如,下面的賦值是合法的:

inti,j,k;i=j=k=10; //i,j,k都賦值為1 運(yùn)算符與表達(dá)式2/6/202370東華大學(xué)計算機(jī)學(xué)院//assignationoperator#include<iostream>usingnamespacestd;intmain(){inta,b;//a:?,b:?a=10;//a:10,b:?b=4;//a:10,b:4a=b;//a:4,b:4b=7;//a:4,b:7cout<<"a:";cout<<a;cout<<"b:";cout<<b;return0;}運(yùn)算符與表達(dá)式2/6/202371東華大學(xué)計算機(jī)學(xué)院復(fù)合賦值運(yùn)算符(Compoundassignation)有10種復(fù)合運(yùn)算符:

+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例

a+=3等價于a=a+3

x*=y+8等價于x=x*(y+8)運(yùn)算符與表達(dá)式2/6/202372東華大學(xué)計算機(jī)學(xué)院賦值表達(dá)式舉例a=5; //表達(dá)式值為5a=b=c=5; //表達(dá)式值為5,a,b,c均為5a=5+(c=6); //表達(dá)式值為11,a為11,c為6a=(b=4)+(c=6);

//表達(dá)式值為10,a為10,b為4,c為6a=(b=10)/(c=2);//表達(dá)式值為5,a為5,b為10,c為2a+=a-=a*a;//相當(dāng)于a=a+(a=a-a*a)運(yùn)算符與表達(dá)式2/6/202373東華大學(xué)計算機(jī)學(xué)院//compundassignation#include<iostream>usingnamespacestd;intmain(){inta,b=3;a=b;

a+=2;

//equivalenttoa=a+2

cout<<a;return0;}賦值表達(dá)式舉例運(yùn)算符與表達(dá)式2/6/202374東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)自增(++)、自減(--)運(yùn)算符為變量的增1和減1提供了緊湊格式。自增、自減運(yùn)算符都是單目運(yùn)算符,其作用是使變量的值增1或減1。運(yùn)算符與表達(dá)式2/6/202375東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)自增、自減運(yùn)算符的運(yùn)算對象只能是整型變量,不能為常量或表達(dá)式。例:

5++ ++(a++) (x+y)-- 錯誤運(yùn)算符與表達(dá)式2/6/202376東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)C++編譯器在處理時盡可能多的自左向右將運(yùn)算符結(jié)合在一起。例:

a+++b表示為(a++)+b,而不是a+(++b)。運(yùn)算符與表達(dá)式2/6/202377東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)在調(diào)用函數(shù)時,實(shí)參的求值順序一般為自右向左。而不是PASCAL語言那樣自左向右。例: inta=1; printf(“%d,%d,%d”,a++,a++,a++); 輸出的結(jié)果為3,2,1;而不是1,2,3。運(yùn)算符與表達(dá)式2/6/202378東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)++、--運(yùn)算符均為右結(jié)合,后綴式為書寫特例;自增式和自減式作為獨(dú)立的表達(dá)式,前綴式和后綴式?jīng)]有區(qū)別;但作為表達(dá)式右值時:(1)前綴式先增值后引用

例:

x=++i

相當(dāng)于

i=i+1;x=i;

(2)后綴式先引用后增值

例:

x=i++

相當(dāng)于

x=i;i=i+1;

運(yùn)算符與表達(dá)式2/6/202379東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)Example1Example2B=3;

A=++B;

//Acontains4,Bcontains4B=3;

A=B++;

//Acontains3,Bcontains4運(yùn)算符與表達(dá)式2/6/202380東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)例:

inta=3; intb=++a; //相當(dāng)于a=a+1;b=a; intc=a++; //相當(dāng)于c=a;a=a+1; b=a--; //相當(dāng)于b=a;a=a-1; c=--a;

//相當(dāng)于a=a-1;c=a;

++(a++);

//錯(a++)不是變量名

c=a++b;

//錯a++無法對b操作

c=a+++b;

//相當(dāng)于c=a+b;a=a+1;

c=a++++b;

//(a++)++b錯注意:編譯掃描器優(yōu)先向左識別算符運(yùn)算符與表達(dá)式2/6/202381東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)//例#include<iostream>usingnamespacestd;voidmain(){inta=3,b,c;b=++a; cout<<"a="<<a<<'\t'<<"b="<<b<<endl;c=a++; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;b=--a; cout<<"a="<<a<<'\t'<<"b="<<b<<endl;c=a--; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;c=a+++b; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;}運(yùn)算符與表達(dá)式2/6/202382東華大學(xué)計算機(jī)學(xué)院自增(Increase,++),自減(Decrease,--)//例#include<iostream>usingnamespacestd;voidmain(){inta=3,b,c;b=++a; cout<<"a="<<a<<'\t'<<"b="<<b<<endl;c=a++; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;b=--a; cout<<"a="<<a<<'\t'<<"b="<<b<<endl;c=a--; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;

c=a+++b; cout<<"a="<<a<<'\t'<<"c="<<c<<endl;}c=a+b,a=a+1;運(yùn)算符與表達(dá)式2/6/202383東華大學(xué)計算機(jī)學(xué)院關(guān)系(Relational)運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符是比較簡單的一種邏輯運(yùn)算符,優(yōu)先次序?yàn)椋?/p>

<<=>>===!=

優(yōu)先級相同(高)優(yōu)先級相同(低)關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式,其結(jié)果類型為bool,值只能為true或false。例如:a>b,c<=a+b,x+y==3運(yùn)算符與表達(dá)式2/6/202384東華大學(xué)計算機(jī)學(xué)院關(guān)系(Relational)運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符。例:

a+b>c 等價于(a+b)>c

a!=b>c等價于a!=(b>c)運(yùn)算符與表達(dá)式2/6/202385東華大學(xué)計算機(jī)學(xué)院邏輯(Logical)運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符:

!(非)&&(與)||(或)

優(yōu)先次序:高→低邏輯表達(dá)式:

例如:(a>b)&&(x>y)

其結(jié)果類型為bool,值只能為true或false。運(yùn)算符與表達(dá)式2/6/202386東華大學(xué)計算機(jī)學(xué)院邏輯運(yùn)算真值表邏輯運(yùn)算真值(真為非0,假為0)aba&&ba||b!a!b0000110非00110非000101非0非01100運(yùn)算符與表達(dá)式2/6/202387東華大學(xué)計算機(jī)學(xué)院條件(Conditional)運(yùn)算符與條件表達(dá)式一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1必須是bool類型執(zhí)行順序:先求解表達(dá)式1;若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果;若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為最終結(jié)果。例:x=a>b?a:b;運(yùn)算符與表達(dá)式2/6/202388東華大學(xué)計算機(jī)學(xué)院條件(Conditional)運(yùn)算符與條件表達(dá)式注意:條件運(yùn)算符優(yōu)先級高于賦值運(yùn)算符,低于邏輯運(yùn)算符。表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為2和3中較高的類型。例:x=a>b?a:b;①②運(yùn)算符與表達(dá)式2/6/202389東華大學(xué)計算機(jī)學(xué)院//conditionaloperator#include<iostream>usingnamespacestd;intmain(){inta,b,c;a=2;b=7;c=(a>b)?a:b;cout<<c;return0;}條件(Conditional)運(yùn)算符與條件表達(dá)式運(yùn)算符與表達(dá)式2/6/202390東華大學(xué)計算機(jī)學(xué)院逗號(Comma)運(yùn)算符與條件表達(dá)式逗號運(yùn)算符用于將多個表達(dá)式連在一起,并將各表達(dá)式從左到右的順序依次求值,但只有其最右端的表達(dá)式的結(jié)果,作為整個逗號表達(dá)式的結(jié)果。運(yùn)算符與表達(dá)式2/6/202391東華大學(xué)計算機(jī)學(xué)院逗號(Comma)運(yùn)算符與條件表達(dá)式格式:表達(dá)式1,表達(dá)式2求解順序及結(jié)果:先求解1,再求解2,最終結(jié)果為表達(dá)式2的值。例:a=3*5,a*4;最終結(jié)果為60運(yùn)算符與表達(dá)式2/6/202392東華大學(xué)計算機(jī)學(xué)院sizeof運(yùn)算符語法形式:sizeof(類型名)或sizeof(表達(dá)式)結(jié)果值:類型名所指定的類型或表達(dá)式的結(jié)果類型所占的字節(jié)數(shù)。例1:a=sizeof(char);例2:doublesalary=1000;b=sizeof(salary);運(yùn)算符與表達(dá)式2/6/202393東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符operatorasmequivalentdescription&ANDBitwiseAND|ORBitwiseInclusiveOR^XORBitwiseExclusiveOR~NOTUnarycomplement(bitinversion)<<SHLShiftLeft>>SHRShiftRight運(yùn)算符與表達(dá)式2/6/202394東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—按位與(&)運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其他位不變。例如:

將char型變量a的最低位置0:a=a&0376;取指定位。

例如:有charc;inta;

取出a的低字節(jié),置于c中:c=a&0377;運(yùn)算符與表達(dá)式2/6/202395東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—按位或(|)運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其他位不變。

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

a=a|0xff;運(yùn)算符與表達(dá)式2/6/202396東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—按位異或(^)運(yùn)算規(guī)則兩個操作數(shù)進(jìn)行異或:

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

若對應(yīng)位不同,則結(jié)果該位為1,舉例:計算071^052071: 00111001052:(^)00101010071^052: 00010011運(yùn)算符與表達(dá)式2/6/202397東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—按位異或(^)用途:使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反)例如:要使01111010低四位翻轉(zhuǎn): 01111010(^) 00001111 01110101運(yùn)算符與表達(dá)式2/6/202398東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—取反(~)單目運(yùn)算符,對一個二進(jìn)制數(shù)按位取反例:025:0000000000010101

~025:1111111111101010運(yùn)算符與表達(dá)式2/6/202399東華大學(xué)計算機(jī)學(xué)院位(bitwise)運(yùn)算符—移位左移運(yùn)算(<<)左移后:低位補(bǔ)0,高位舍棄。右移運(yùn)算(>>)右移后:低位:舍棄。高位:無符號數(shù):補(bǔ)0;有符號數(shù):補(bǔ)符號位。運(yùn)算符與表達(dá)式2/6/2023100東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;運(yùn)算符與表達(dá)式2/6/2023101東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;引用說明符運(yùn)算符與表達(dá)式2/6/2023102東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;取址運(yùn)算運(yùn)算符與表達(dá)式2/6/2023103東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;指針說明符運(yùn)算符與表達(dá)式2/6/2023104東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;算術(shù)乘運(yùn)算符運(yùn)算符與表達(dá)式2/6/2023105東華大學(xué)計算機(jī)學(xué)院運(yùn)算符的多義性運(yùn)算符的意義與上下文相關(guān)。inta=35;int&ra=a;int*p=&a;a=ra*4;*p=5**p;間址訪問運(yùn)算符與表達(dá)式2/6/2023106東華大學(xué)計算機(jī)學(xué)院數(shù)據(jù)類型轉(zhuǎn)換C++中數(shù)據(jù)類型轉(zhuǎn)換有兩類,即隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換。隱式類型轉(zhuǎn)換:由編譯器自動完成的類型轉(zhuǎn)換。當(dāng)編譯器遇到不同類型的數(shù)據(jù)參與同一運(yùn)算時,會自動將它們轉(zhuǎn)換為相同類型后再進(jìn)行運(yùn)算,賦值時會把所賦值的類型轉(zhuǎn)換為與被賦值變量類型一樣。隱式類型轉(zhuǎn)換按從低到高的順序進(jìn)行。數(shù)據(jù)類型轉(zhuǎn)換2/6/2023107東華大學(xué)計算機(jī)學(xué)院隱式類型轉(zhuǎn)換整型(int)短整型,字符型(short,char)單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)無符號長整型(unsignedlong)長整型(long)無符號整型(unsigned)2/6/2023108東華大學(xué)計算機(jī)學(xué)院顯式數(shù)據(jù)轉(zhuǎn)換顯式類型轉(zhuǎn)換是由程序員顯式指出的類型轉(zhuǎn)換,轉(zhuǎn)換形式有兩種:類型名(表達(dá)式)(類型名)表達(dá)式這里的類型名是任何合法的C++數(shù)據(jù)類型,例如float、int等。通過類型的顯式轉(zhuǎn)換可以將表達(dá)式轉(zhuǎn)換成適當(dāng)?shù)念愋汀? 例如:

doublef=3.6; intn=(int)f; 這樣n為3。

顯式數(shù)據(jù)轉(zhuǎn)換2/6/2023109東華大學(xué)計算機(jī)學(xué)院數(shù)組數(shù)組:指具有一定順序關(guān)系的若干相同類型變量的集合體,組成數(shù)組的變量稱為該數(shù)組的元素。數(shù)組的類型就是數(shù)組元素的數(shù)據(jù)類型。數(shù)組屬于構(gòu)造類型。

根據(jù)數(shù)組的維數(shù),分為一維數(shù)組、二維數(shù)組和多維數(shù)組,常用的是一維和二維數(shù)組。2/6/2023110東華大學(xué)計算機(jī)學(xué)院一維數(shù)組的聲明數(shù)組—一維數(shù)組一維數(shù)組的聲明:類型說明符數(shù)組名[常量表達(dá)式];

例如:inta[10];

表示a為整型數(shù)組,有10個元素:a[0]...a[9]對上面的數(shù)組a,也可采用如下的聲明方式:constintsize=10;inta[size];注意:在聲明數(shù)組時,不能用變量來描述數(shù)組聲明中的元素個數(shù)。例如:int

b[n];是不合法的2/6/2023111東華大學(xué)計算機(jī)學(xué)院一維數(shù)組的引用一維數(shù)組的引用:必須先聲明,后使用。只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組。注意:聲明與引用形式上的相似與含義上的區(qū)分。聲明時,指數(shù)組的大小空間。引用時,指引用下標(biāo)標(biāo)識的數(shù)組元素。例如:a[0]=a[5]+a[7]-a[2*3]數(shù)組—一維數(shù)組2/6/2023112東華大學(xué)計算機(jī)學(xué)院#include<iostream>usingnamespacestd;intmain(){intA[10],B[10];inti;for(i=0;i<10;i++){

A[i]=i*2-1;

B[10-i-1]=A[i];}for(i=0;i<10;i++){ cout<<"A["<<i<<"]="<<A[i]; cout<<"B["<<i<<"]="<<B[i]<<endl;}}示例:一維數(shù)組的聲明與引用數(shù)組—一維數(shù)組2/6/2023113東華大學(xué)計算機(jī)學(xué)院一維數(shù)組的存儲順序數(shù)組元素在內(nèi)存中順次存放,它們的地址是連續(xù)的。例如:具有10個元素的數(shù)組a,在內(nèi)存中的存放次序如下:數(shù)組名字是數(shù)組首元素的內(nèi)存地址。數(shù)組名是一個常量,不能被賦值。a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a數(shù)組—一維數(shù)組2/6/2023114東華大學(xué)計算機(jī)學(xué)院一維數(shù)組的初始化可以在編譯階段使數(shù)組得到初值:在聲明數(shù)組時對數(shù)組元素賦以初值。

例如:staticinta[10]={0,1,2,3,4,5,6,7,8,9};可以只給一部分元素賦初值。前面的元素按順序初始化相應(yīng)的值,后面不足的部分由系統(tǒng)自動初始化為0(對數(shù)值數(shù)組)或空字符‘\0’(對字符數(shù)組)

例如:staticinta[10]={0,1,2,3,4};在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。

例如:staticinta[]={1,2,3,4,5}數(shù)組—一維數(shù)組2/6/2023115東華大學(xué)計算機(jī)學(xué)院一維數(shù)組的初始化對于字符型數(shù)組的初始化,除了上面介紹的方式外,還可以:將整個字符型數(shù)組一次性賦值為一個字符串。例如,下面三種賦值方式是等價的:chard[6]={‘h’,’e’,’l’,’l’,’o’,’\0’};chard[6]={“hello”};chard[6]=“hello”;數(shù)組—一維數(shù)組2/6/2023116東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值用=

賦值:與數(shù)組元素的初始化不同,在給數(shù)組元素進(jìn)行賦值時,必須逐一賦值。例如:對于下述數(shù)組的初始化:inta[3]={1,2,3};其等價的賦值形式如下:inta[3];a[0]=1;a[1]=2;a[2]=3;數(shù)組—一維數(shù)組2/6/2023117東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值若要在數(shù)組之間進(jìn)行賦值,也只能一個一個元素地進(jìn)行。例如:將上述數(shù)組a的值賦給另一個同樣大小的數(shù)組b,可以利用下面的循環(huán)完成賦值操作:for(i=0;i<3;i++)b[i]=a[i];數(shù)組—一維數(shù)組2/6/2023118東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值用流命令賦值:其語法格式為:cin>>數(shù)組名;或

cin>>數(shù)組名[下標(biāo)];例如:對一個大小為5的字符型數(shù)組a賦值,可以用下列兩種方式:chara[5];或chara[5];cin>>a;inti;for(i=0;i<5;i++)cin>>a[i];數(shù)組—一維數(shù)組2/6/2023119東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值用scanf()函數(shù)賦值:其語法格式為:scanf(“類型格式”,數(shù)組名);或scanf(“類型格式”,數(shù)組元素地址);數(shù)組—一維數(shù)組2/6/2023120東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值用C++庫函數(shù)中的字符串拷貝函數(shù)strcpy()賦值:其常見的語法格式為:strcpy(數(shù)組名,字符串);//將一個字符串賦值到一個字符數(shù)組中例如:charstr1[10];strcpy(str1,”hello”);注意,此例不能寫為:str1=“hello”;//不合法數(shù)組—一維數(shù)組2/6/2023121東華大學(xué)計算機(jī)學(xué)院數(shù)組的賦值用C++庫函數(shù)中的字符串拷貝函數(shù)strcpy()賦值:另一種常見的語法格式為:strcpy(數(shù)組名1,數(shù)組名2);//將數(shù)組2中的字符串賦值到數(shù)組1中例如:strcpy(str1,str2);注意,此例不能寫為:str1=str2;//不合法數(shù)組—一維數(shù)組2/6/2023122東華大學(xué)計算機(jī)學(xué)院數(shù)組越界在給數(shù)組元素賦值或?qū)?shù)組元素進(jìn)行引用時,一定要注意下標(biāo)的值不要超過數(shù)組的范圍,否則會產(chǎn)生數(shù)組越界的問題。常用下面的式子確定數(shù)組的大小,預(yù)防數(shù)組越界情況的發(fā)生。例如:對于一個整型數(shù)組a,它的大小為:sizeof(a)/sizeof(int);使用上面這個式子,可以使數(shù)組大小計算在16位機(jī)器和32位機(jī)器之間移植。數(shù)組—一維數(shù)組2/6/2023123東華大學(xué)計算機(jī)學(xué)院一維數(shù)組應(yīng)用舉例循環(huán)從鍵盤讀入若干組選擇題答案,計算并輸出每組答案的正確率,直到輸入ctrl+z為止。每組連續(xù)輸入5個答案,每個答案可以是'a'..'d'。數(shù)組—一維數(shù)組2/6/2023124東華大學(xué)計算機(jī)學(xué)院#include<iostream>usingnamespacestd;intmain(){charkey[]={'a','c','b','a','d'};charc;intques=0,numques=5,numcorrect=0;cout<<"Enterthe"<<numques<<"questiontests:"<<endl;while(cin.get(c)){if(c!='\n') if(c==key[ques]) {num

溫馨提示

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

最新文檔

評論

0/150

提交評論