第02章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第1頁(yè)
第02章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第2頁(yè)
第02章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第3頁(yè)
第02章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第4頁(yè)
第02章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄第1章C++概述第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式第3章簡(jiǎn)單的輸入/輸出第4章C++的流程控制第5章函數(shù)第6章編譯預(yù)處理第7章數(shù)組第8章結(jié)構(gòu)體、共同體和枚舉類型第9章指針和引用第10章類和對(duì)象第11章類和對(duì)象的其他特性第12章繼承和派生第13章多態(tài)性第14章輸入/輸出流第15章模板第一部分面向過(guò)程的程序設(shè)計(jì)第二部分面向?qū)ο蟮某绦蛟O(shè)計(jì)第2章

數(shù)據(jù)類型、運(yùn)算符與表達(dá)式簡(jiǎn)單地說(shuō):程序=數(shù)據(jù)結(jié)構(gòu)+算法C++程序的構(gòu)成:(1)數(shù)據(jù)描述(2)執(zhí)行步驟(算法)[例1.1]一個(gè)簡(jiǎn)單的C++程序

#include<iostream.h>voidmain(void){

intnum,square;

cout<<"num=";

cin>>num;

square=num*num;

cout<<"num的平方為:"<<square

<<'\n';

}下面學(xué)習(xí):程序的各種語(yǔ)法元素……2.1保留字和標(biāo)識(shí)符2.1.1保留字(ReservedWordorKeyword)C++語(yǔ)言自身使用的,已有特殊含義和用途的英文單詞稱為保留字或關(guān)鍵字。如例1.1中的類型說(shuō)明符int,用于定義整型變量。用戶不能將其作為自己的變量名或函數(shù)名使用。2.1.2標(biāo)識(shí)符標(biāo)識(shí)符(identifier):有效字符序列,用來(lái)標(biāo)識(shí)用戶自己定義的變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名等命名規(guī)則:只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線最大長(zhǎng)度為1~247個(gè)字符。如:MyNameaverageGetDay

StudentName_aboveLotus_1_2_3

非法標(biāo)識(shí)符如:M.D.John$1233Dmax合法標(biāo)識(shí)符如:(有時(shí)用匈牙利命名法)例:#include<iostream.h>voidmain(void){

inta,b,sum;/*定義變量*/

a=123; b=456; sum=a+b;

cout<<"sumis"<<sum<<'\n';}保留字標(biāo)識(shí)符(變量名、函數(shù)名、對(duì)象名)常數(shù)2.2C++的基本數(shù)據(jù)類型數(shù)據(jù)類型基本類型導(dǎo)出類型整型實(shí)型字符型空類型(無(wú)值型)單精度型雙精度型數(shù)組類型指針類型結(jié)構(gòu)體類型共用體類型枚舉類型不論是變量還是常數(shù),在計(jì)算機(jī)內(nèi)部都要按照某種形式存放,存放形式由數(shù)據(jù)類型決定。類型標(biāo)識(shí)名稱占用字節(jié)數(shù)取值范圍char字符型1-128~127int

整型4-231~(231-1)float實(shí)型4-1038~1038double雙精度實(shí)型8-10308~10308以上基本類型數(shù)據(jù)占內(nèi)存字節(jié)不相同,因此數(shù)值范圍也不同,見(jiàn)表2-1及表2-2對(duì)基本類型,可以加修飾,如:

int

型int

占4字節(jié)short

int

占2字節(jié)long

int

占4字節(jié)int:signed

int

unsigned

int

shortint:signedshortint

unsignedshortintlongint:signedlongint

unsignedlongint最簡(jiǎn)形式:intunsigned[int]shortunsignedshortlongunsignedlong再加修飾,如:注意:int

型變量與unsignedint

型變量的區(qū)別32位范圍

int

型:-231~(補(bǔ)碼)(231-1)符號(hào)位32位范圍unsignedint

型:0~(232-1)

無(wú)符號(hào)位2.3常量和變量2.3.1常量常量:在程序運(yùn)行過(guò)程中,其值不能被改變的量#include<iostream.h>voidmain(void){

inta,b,sum;/*定義變量*/

a=123; b=456; sum=a+b;

cout<<"sumis"<<sum<<'\n';}常量(常數(shù))1.整型常量①十進(jìn)制整數(shù)123,-456②八進(jìn)制整數(shù)0123,-011③十六進(jìn)制整數(shù)0x123,-0xAB④長(zhǎng)整型與無(wú)符號(hào)型常數(shù)

12L,0234L,-0xABL

12U,0234U,0xABU2.實(shí)型常量(在內(nèi)存中以浮點(diǎn)形式存放)(均為十進(jìn)制,無(wú)數(shù)制區(qū)分)①小數(shù)形式:必須有小數(shù)點(diǎn)1.651..123②指數(shù)形式(也稱為科學(xué)表示法):如123000.0可寫(xiě)為1.23e50.00368可寫(xiě)為3.68E-3e或E前必須有數(shù)字,1000寫(xiě)為1e3不能寫(xiě)為e33.字符型常量用于表示ASCII字符,見(jiàn)附錄A。在內(nèi)存中存放對(duì)應(yīng)的ASCII碼值,如'a'的ASCII碼為97,則在內(nèi)存中用一個(gè)字節(jié)存放:在源程序中最基本的表示形式為:?jiǎn)我?hào)括起來(lái)的一個(gè)字符,如:'a''A'

'?'01100001對(duì)于不可打印的字符,可以用轉(zhuǎn)義字符形式表示。注意:'\n'

與'n'

的區(qū)別!!!轉(zhuǎn)義字符:以反斜杠“\”引導(dǎo)的特殊形式的非顯示字符或表示特定意義的字符常量'\n'

'\t'

'\b'

'\\'

'\ddd'

'\xhh'

見(jiàn)表2-3注意:字母A的ASCII碼是(65)10=(101)8=(41)16在程序中表示字母A,可以有三種方法:'A''\101''\x41''\n'表示一個(gè)控制字符,'n'表示一個(gè)字母。4.字符串常量---用雙引號(hào)括起來(lái)的字符序列(在內(nèi)存中存放字符序列的ASCII碼值,最后加一個(gè)結(jié)尾標(biāo)志)如:"Howdoyoudo."

"CHINA"

"a"字符串結(jié)束標(biāo)志符是:'\0'注意:"a"和'a'是不同的。'C''H''I''N''A''\0'…...符號(hào)常量:用標(biāo)識(shí)符代表一個(gè)常量,必須先定義后使用。例:定義標(biāo)識(shí)符常量#definePRICE30#definePI3.1425926#defineS"China"constfloatpi=3.142.3.2符號(hào)常量例2.1符號(hào)常量的使用#include<iostream.h>#definePI3.1425926voidmain(void){ doubleangle,radian;

cin>>angle; radian=angle*PI/180;//角度→弧度

cout<<radian<<'\n';}好處:(1)提高程序的可讀性。(2)程序中使用多處,一改全改。2.3.3變量變量:其值可以改變的量。變量名:一個(gè)變量的符號(hào)名,由標(biāo)識(shí)符構(gòu)成。一個(gè)變量占據(jù)內(nèi)存一定的存儲(chǔ)單元,在存儲(chǔ)單元中存放該變量的值。inta,b;//定義2個(gè)整型變量a,bunsignedu;//定義1個(gè)無(wú)符號(hào)整型變量ufloatf;//定義1個(gè)單精度實(shí)型變量doubled;//定義1個(gè)雙精度實(shí)型變量charc1,c2,c3;//定義3個(gè)字符型變量c1,c2,c3

1.定義變量注意:(1)區(qū)別大小寫(xiě):如sum與Sum為不同的變量名。(2)先定義后使用:分配單元、確定類型、語(yǔ)法檢查(3)在一個(gè)程序單元中不能重復(fù)定義。(4)關(guān)鍵字(保留字)不能作為標(biāo)識(shí)符。(5)最大長(zhǎng)度隨不同的C++語(yǔ)言系統(tǒng)而定:

VC++識(shí)別前247個(gè)字符,超過(guò)無(wú)效。(6)按義取名。2.變量賦初值給變量賦初值的方法有兩種:(1)變量定義后,用賦值語(yǔ)句賦初值。例如:inta,b;a=12;b=-24;charc1,c2;c1='A';c2='B';(2)在定義變量的同時(shí),直接賦初值(稱為變量的初始化)。例如:inta=12,b=-24;charc1='A',c2='B';2.4基本運(yùn)算符和表達(dá)式2.4.1C++運(yùn)算符及表達(dá)式簡(jiǎn)介完成對(duì)常量、變量作運(yùn)算的符號(hào)稱為運(yùn)算符。把參與運(yùn)算的對(duì)象稱為操作數(shù)。操作數(shù)可以是常量和變量等。各種運(yùn)算符見(jiàn)表2-4一元運(yùn)算符、二元運(yùn)算符、三元運(yùn)算符2.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本算術(shù)運(yùn)算符:+-*/%/整數(shù)運(yùn)算時(shí)為整除,結(jié)果為整數(shù)。%(模運(yùn)算或稱求余運(yùn)算)必須為整型數(shù)據(jù)。例:7/3結(jié)果?7.0/3結(jié)果?7%3結(jié)果?22.333333……1由運(yùn)算符和操作數(shù)構(gòu)成表達(dá)式:如:a+ba*(c+d)a*c+d2.4.3運(yùn)算優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí):對(duì)于同一表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符,先算哪一個(gè)。結(jié)合性:在兩種運(yùn)算優(yōu)先級(jí)相同時(shí),“自左向右”還是“自右向左”運(yùn)算稱為結(jié)合性。如:算術(shù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí):+-較低*/%較高結(jié)合性:"自左向右"例:表達(dá)式:6/3*2“自左向右”或“自右向左”運(yùn)算結(jié)果不同2.4.4關(guān)系運(yùn)算符和關(guān)系表達(dá)式“關(guān)系運(yùn)算”實(shí)際上就是“比較運(yùn)算”關(guān)系運(yùn)算符及其優(yōu)先次序<<=>>===!=小于小于等于大于大于等于恒等于不等于優(yōu)先級(jí)相同(較高)優(yōu)先級(jí)相同(較低)關(guān)系運(yùn)算符及其優(yōu)先級(jí)說(shuō)明a==b<c等效于a==(b<c)

c>a+b

等效于c>(a+b)

算術(shù)關(guān)系(

<,<=,>和>=

)關(guān)系(

==和!=

高低關(guān)系表達(dá)式1.用關(guān)系運(yùn)算符連接兩個(gè)表達(dá)式如:a>b,a+b>b+c,'a'<'b'等

inta=1,b=2,c=3;則表達(dá)式

a>b

的值為

0則表達(dá)式

b<a+c

的值為

12.關(guān)系表達(dá)式的值(運(yùn)算結(jié)果)是邏輯值:“真”或“假”1

表示真

0表示假關(guān)系運(yùn)算符的結(jié)合性:自左向右2.4.5邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符及其優(yōu)先級(jí):C++語(yǔ)言提供三種邏輯運(yùn)算符:

&&

邏輯“與”

||

邏輯“或”

!

邏輯“非”雙目運(yùn)算符即有兩個(gè)操作數(shù)如

a&&b單目運(yùn)算符,即只有一個(gè)操作數(shù)。如

!

a邏輯運(yùn)算的意義:a&&b當(dāng)a、b

均為真時(shí),表達(dá)式的值才為真a||b當(dāng)a、b

均為假時(shí),表達(dá)式的值才為假!a當(dāng)a為假,!a

為真;反之,當(dāng)a為真時(shí),!a

的值為假邏輯運(yùn)算“真值表”aba&&b

a||b!a00001010111001011110邏輯運(yùn)算符的優(yōu)先次序:

!(非)

算術(shù)

關(guān)系

&&

||

邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連結(jié)起來(lái)

低(a>b)&&(x>y)a>b&&x>y(a==b)||(x==y)a==b||

x==y(!a)>b!a>b(2)C++編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),

以數(shù)值1代表“真”以數(shù)值0

代表“假”(1)運(yùn)算時(shí),在判斷一個(gè)量是否為“真”時(shí),

以非0

代表“真”以0代表“假”例如:已知a=4 則!a的值是0已知a=0,b=5 則a&&b

的值是0 則a||b

的值是1 則!a&&b

的值是1注意:注意:在C++程序中,欲表示數(shù)學(xué)關(guān)系

0≤x≤10

,C++的邏輯表達(dá)式必須寫(xiě)成

0<=x&&x<=10,而不能寫(xiě)成

0<=x<=10。

為什么?2.4.6位運(yùn)算符和位運(yùn)算表達(dá)式

位運(yùn)算是對(duì)整型數(shù)據(jù)的運(yùn)算(可以操作到位),符號(hào)位參與運(yùn)算,主要用于系統(tǒng)程序設(shè)計(jì)。位運(yùn)算符共有6種:它們是:按位與(&)按位或(|)按位異或(^)按位取反(~)

左移(<<)

右移(>>)舉例:按位“與”例如:已知:chara=3,b=-2,c;

求:c=a&b;

此時(shí),可將a、b、c看成是一個(gè)字節(jié)長(zhǎng)度的整型數(shù)。a00000011&b11111110c00000010結(jié)果變量c的值為2。其它位運(yùn)算,自學(xué)。

2.4.7自增、自減運(yùn)算符和表達(dá)式使變量的值加1或減1的運(yùn)算如:++i,--i在使用i之前加或減1i++,i--在使用i之后加或減1inti=3,j;j=++i;運(yùn)算后i=

?,j=?inti=3,j;j=i++;運(yùn)算后i=

?,j=?注意:只能用于變量,不能用于常量和表達(dá)式,如:3++;(a+b)++;錯(cuò)誤i=

4,j=4i=

4,j=32.4.8賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符

“=”是賦值運(yùn)算符,賦值表達(dá)式格式:<變量><賦值運(yùn)算符><表達(dá)式>求解過(guò)程:求出<表達(dá)式>的值,賦給<變量>賦值表達(dá)式的值:為<變量>的值如:a=b+c<表達(dá)式>還可以是另一個(gè)賦值表達(dá)式,如:a=b=5a=5+(c=6)a=(b=4)+(c=6)如果a初值為2,表達(dá)式結(jié)果?結(jié)果為7如:a=33是最簡(jiǎn)單的表達(dá)式i=i+1它不同于“等于號(hào)”注意優(yōu)先級(jí)與結(jié)合性

b=c=d=a+5自右向左表達(dá)式結(jié)果分別為:?511102.復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3x/=9簡(jiǎn)寫(xiě)為:a+=3

a=a+3簡(jiǎn)寫(xiě)為:a-=b

a=a-b同理:賦值運(yùn)算符以及復(fù)合賦值運(yùn)算符的運(yùn)算優(yōu)先級(jí)比算術(shù)運(yùn)算符優(yōu)先級(jí)低,運(yùn)算結(jié)合性為自右向左。等價(jià)于x=x/9例:a+=a-=a*a如果a初值為2,表達(dá)式結(jié)果?

a+=a-=a*a結(jié)果a的值為-4表達(dá)式的結(jié)果也為-42.4.9逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:,

逗號(hào)表達(dá)式:<表達(dá)式1>,<表達(dá)式2>,…...,<表達(dá)式n>如:a=3*5,a*4,a+5逗號(hào)運(yùn)算符優(yōu)先級(jí)最低,結(jié)合性:自左向右求解過(guò)程:依次計(jì)算<表達(dá)式1>、<表達(dá)式2>…...<表達(dá)式n>的值。逗號(hào)表達(dá)式的值:為<表達(dá)式n>的值運(yùn)算結(jié)束后:a的值為15整個(gè)表達(dá)式的值為20a=3*5,a*4x=(a=3,6*3)賦值表達(dá)式x=a=3,6*3逗號(hào)表達(dá)式例:如下表達(dá)式,運(yùn)算結(jié)束后a=?x=?表達(dá)式=?a=15,表達(dá)式=60a=3,x=18,表達(dá)式=18a=3,x=3,表達(dá)式=18逗號(hào)表達(dá)式2.4.10sizeof()運(yùn)算符和表達(dá)式

例inti;doublex;

sizeof(int)

sizeof(i)

sizeof(double)

sizeof(x)格式:

sizeof(類型標(biāo)識(shí)/變量名)功能:求某類型變量所占字節(jié)數(shù)結(jié)果均為4結(jié)果均為8例:求<表達(dá)式1>&&<表達(dá)式2>2.4.11邏輯表達(dá)式運(yùn)算優(yōu)化時(shí)的副作用從左向右掃描,計(jì)算<表達(dá)式1>,★當(dāng)<表達(dá)式1>為真時(shí),繼續(xù)計(jì)算<表達(dá)式2>★當(dāng)<表達(dá)式1>為假時(shí),即能確定整個(gè)表達(dá)式的值為假,則停止計(jì)算<表達(dá)式2>例:求

<表達(dá)式1>||<表達(dá)式2>從左向右掃描,計(jì)算<表達(dá)式1>,★當(dāng)<表達(dá)式1>為假時(shí),繼續(xù)計(jì)算<表達(dá)式2>★當(dāng)<表達(dá)式1>為真時(shí),即能確定整個(gè)表達(dá)式的值為真,則停止計(jì)算<表達(dá)式2>課堂練習(xí)intx,y,z,w;輸出結(jié)果?x=y=z=1;w=++x||++y&&++z;cout<<x<<'\t'<<y<<'\t'<<z<<'\n';cout<<w<<'\n';輸出:21112.5類型轉(zhuǎn)換2.5.1賦值時(shí)的自動(dòng)類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的類型不一致,則遵循以下幾條原則進(jìn)行類型轉(zhuǎn)換后賦值。1.整型變量←實(shí)型數(shù)據(jù),舍棄小數(shù)(無(wú)四舍五入)。inti=3.96;i為32.實(shí)型變量←整型數(shù)據(jù),數(shù)值不變,有效數(shù)位增加。floatf=23;f為23.0doubled=23;d為23.03.整型數(shù)據(jù)之間相互賦值

整型數(shù)據(jù)類型有:[signed]charunsignedchar[signed]shortunsignedshort[signed]intunsignedint[signed]longunsignedlong各種類型的整型數(shù)占用的字節(jié)數(shù)是不同的,其二進(jìn)制位數(shù)有長(zhǎng)有短。它們之間相互賦值,其實(shí)就是它們內(nèi)存數(shù)據(jù)之間的賦值,分兩種情況。下面以int

型數(shù)據(jù)與char型數(shù)據(jù)之間的賦值進(jìn)行說(shuō)明:

將int

型變量賦給字符型變量時(shí)(長(zhǎng)→短)方法:截取低位賦值例:signedcharc1=250;c1真值為-6

250為int型常數(shù),32位:0000……000011111010

c1:11111010將字符型變量賦給int

型變量時(shí)(短→長(zhǎng)),又分成兩種情況:

①有符號(hào)的字符型數(shù)據(jù)→整型變量需符號(hào)位擴(kuò)展

例:charc1=15;inti;i=c1;

i為整型變量32位:0000……000000001111

c1(正號(hào)):00001111擴(kuò)展正號(hào),結(jié)果i的真值為1515為整型常數(shù)32位:0000……000000001111

charc1=250;inti;i=c1;

i為整型變量32位:1111……111111111010

250為整型常數(shù)32位:0000……000011111010

c1(負(fù)號(hào)):11111010

擴(kuò)展負(fù)號(hào),結(jié)果i的真值為-6②無(wú)符號(hào)的字符型數(shù)據(jù)→整型變量前面補(bǔ)0

unsignedcharc1=250;inti;i=c1;

i為整型變量32位:0000……000011111010

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論