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

下載本文檔

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

文檔簡介

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

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

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

intnum,square;

cout<<"num=";

cin>>num;

square=num*num;

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

<<'\n';

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

StudentName_aboveLotus_1_2_3

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

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

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

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

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

int

型int

占4字節(jié)short

int

占2字節(jié)long

int

占4字節(jié)int:signed

int

unsigned

int

shortint:signedshortint

unsignedshortintlongint:signedlongint

unsignedlongint最簡形式:intunsigned[int]shortunsignedshortlongunsignedlong再加修飾,如:注意:int

型變量與unsignedint

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

int

型:-231~(補碼)(231-1)符號位32位范圍unsignedint

型:0~(232-1)

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

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

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

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

12L,0234L,-0xABL

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

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

與'n'

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

'\t'

'\b'

'\\'

'\ddd'

'\xhh'

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

"CHINA"

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

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

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

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

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

c>a+b

等效于c>(a+b)

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

<,<=,>和>=

)關(guān)系(

==和!=

高低關(guān)系表達(dá)式1.用關(guān)系運算符連接兩個表達(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á)式的值(運算結(jié)果)是邏輯值:“真”或“假”1

表示真

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

&&

邏輯“與”

||

邏輯“或”

!

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

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

!

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

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

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

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

的值為假邏輯運算“真值表”aba&&b

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

!(非)

算術(shù)

關(guān)系

&&

||

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

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

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

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

代表“假”(1)運算時,在判斷一個量是否為“真”時,

以非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á)式必須寫成

0<=x&&x<=10,而不能寫成

0<=x<=10。

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

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

左移(<<)

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

求:c=a&b;

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

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

?,j=?inti=3,j;j=i++;運算后i=

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

4,j=4i=

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

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

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

a=a+3簡寫為:a-=b

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

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

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

例inti;doublex;

sizeof(int)

sizeof(i)

sizeof(double)

sizeof(x)格式:

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

<表達(dá)式1>||<表達(dá)式2>從左向右掃描,計算<表達(dá)式1>,★當(dāng)<表達(dá)式1>為假時,繼續(xù)計算<表達(dá)式2>★當(dāng)<表達(dá)式1>為真時,即能確定整個表達(dá)式的值為真,則停止計算<表達(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賦值時的自動類型轉(zhuǎn)換如果賦值運算符兩側(cè)的類型不一致,則遵循以下幾條原則進行類型轉(zhuǎn)換后賦值。1.整型變量←實型數(shù)據(jù),舍棄小數(shù)(無四舍五入)。inti=3.96;i為32.實型變量←整型數(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ù)是不同的,其二進制位數(shù)有長有短。它們之間相互賦值,其實就是它們內(nèi)存數(shù)據(jù)之間的賦值,分兩種情況。下面以int

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

將int

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

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

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

型變量時(短→長),又分成兩種情況:

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

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

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

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

charc1=250;inti;i=c1;

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

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

c1(負(fù)號):11111010

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

unsignedcharc1=250;inti;i=c1;

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

溫馨提示

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

評論

0/150

提交評論