版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++程序設(shè)計中國高等院校計算機基礎(chǔ)教育課程體系規(guī)劃教材譚浩強編著第2章數(shù)據(jù)類型和表達式2.1C++數(shù)據(jù)類型2.2常量2.3變量2.4C++運算符2.5算術(shù)運算符和表達式2.6賦值運算符和表達式2.7逗號運算符和表達式教學目標熟悉C++語言的數(shù)據(jù)類型;能夠區(qū)分常量與變量的不同,掌握基本數(shù)據(jù)類型的常量與變量的定義、使用;熟悉常用的運算符,能夠根據(jù)要求構(gòu)造相應的表達式。重點:基本數(shù)據(jù)類型、常量與變量、常用的運算符難點:不同數(shù)據(jù)類型的差異、常量與變量的區(qū)別、部分運算符的功能與優(yōu)先級第2章數(shù)據(jù)類型和表達式2.1C++數(shù)據(jù)類型2.2常量2.3變量2.4C++運算符2.5算術(shù)運算符和表達式2.6賦值運算符和表達式2.7逗號運算符和表達式2.1.C++的數(shù)據(jù)類型
數(shù)據(jù)是計算機處理的對象,是以某種特定形式存在的(整型、浮點等形式)。
例如:
從上我們可以得到數(shù)據(jù):姓名、國籍、民族,年齡:23歲,身高:1.91m,體重:91.0kg,…它們具有不同的性質(zhì):字符串有標識作用,數(shù)值型可計算,還有精度差異。編寫程序時,需區(qū)別對待中文名:林書豪英文名:JeremyShu-HowLin國籍:美國民族:漢族出生日期:1988.8.23畢業(yè)院校:哈佛大學經(jīng)濟系身高:1.91m體重:91kg什么是數(shù)據(jù)掌握數(shù)據(jù)類型的目的程序運行時所處理的數(shù)據(jù)需要存儲在內(nèi)存中,不同性質(zhì)的數(shù)據(jù)所占用存儲空間的多少、數(shù)值范圍及可進行的操作也不同;所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式不同的類型分配不同的長度和存儲形式數(shù)據(jù)在計算機中的存儲是以字節(jié)為單位計算的,一個字節(jié)是8位。例如:整數(shù)10的用2字節(jié)表示的示圖:單精度型(float)雙精度型(double)數(shù)據(jù)類型基本類型整型字符型(char)浮點型派生類型指針類型(*)數(shù)組類型([])結(jié)構(gòu)體類型(struct)共用體類型(union)類類型空類型(void)枚舉類型(enum)整型(int)短整型(shortint)長整型(longint)C++的數(shù)據(jù)類型掌握數(shù)據(jù)類型的關(guān)鍵數(shù)據(jù)類型情況重點掌握類型類型標識符(關(guān)鍵字)、所占字節(jié)數(shù)、表示的數(shù)值范圍。下表是VC的基本數(shù)據(jù)類型:C++語言還允許在基本數(shù)據(jù)類型(除void類型外)前加上類型修飾符,更具體地表示數(shù)據(jù)類型。C語言的類型修飾符包括:signed(有符號)
unsigned(無符號)short(短型)long(長型(1)整型數(shù)據(jù)基本整型(int):不同編譯系統(tǒng)或計算機系統(tǒng)中所占用的字節(jié)不同,通常為2字節(jié)(TC)或4字節(jié)(VC)在VC中,占4字節(jié)(32位), 范圍:-2147483648~2147483647存儲方式:以二進制補碼形式存放數(shù)據(jù)(以VC系統(tǒng)為例)問題:最小整數(shù)-231的存儲形式是什么?000011000000000000000000000000001211110100111111111111111111111111-12231-1(最大整數(shù))11111111111111111111111101111111(1)整型數(shù)據(jù)(續(xù))短整型(shortint):為2字節(jié),范圍:-32768~32767(即215-1)長整型(longint):為4字節(jié),范圍:-2147483648~2147483647(即-231~231-1)雙長整型(long
longint):一般分配8字節(jié),是C99新增類型,許多編譯系統(tǒng)尚未實現(xiàn)??捎茫簊izeof(類型名或數(shù)據(jù))
來獲取該類型數(shù)據(jù)所占字節(jié)數(shù)。(注:Sizeof是運算符,不是函數(shù))雖然在不同系統(tǒng)中,同一數(shù)據(jù)類型所占用字節(jié)存在著差異,但同一系統(tǒng)不同數(shù)據(jù)類型的長度有明確的大小關(guān)系,即:sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(lomglong)例1:使用sizeof運算符獲取數(shù)據(jù)、類型的所占字節(jié)數(shù)#include<iostream>usingnamespacestd;intmain(){cout<<"int型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(int)<<"\n";cout<<"shortint型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(shortint)<<"\n";cout<<"longint型數(shù)據(jù)所占字節(jié)數(shù):"<<sizeof(longint)<<"\n";cout<<"整數(shù)2345所占字節(jié)數(shù):"<<sizeof(2345)<<"\n"; return0;}(1)整型數(shù)據(jù)(續(xù))可在整型前加unsigned來定義無符號整數(shù),例如:unsignedint、
unsignedshortint、unsignedlongint、unsignedlonglongint,由于最高位不再用來存放整數(shù)的符號,因此,可表示整數(shù)的范圍擴大一倍:(以VC系統(tǒng)為例)unsignedshortint:0~65535(即216-1)unsignedint:0~4294967295(即232-1)unsignedlongint:0~4294967295(即232-1)unsignedlonglongint:0~264-1說明:只有整型(包括字符型)可加unsigned或signed,實數(shù)不允許;若將一個負數(shù)賦值給一個無符號變量,將得到錯誤結(jié)果,見p47(2)字符型數(shù)據(jù)(由一個字符組成)字符是按其代碼(整數(shù))形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9專門符號:29個:!”#&‘()*等空格符:空格、水平制表符、換行等不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等(2)字符型數(shù)據(jù)(續(xù))字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個形狀為’1’的符號,在需要時按原樣輸出,在內(nèi)存中以ASCII碼形式存儲,占1個字節(jié)(在所有系統(tǒng)中)整數(shù)1是以整數(shù)存儲方式(二進制補碼方式)存儲的,TC系統(tǒng)占2個字節(jié),VC系統(tǒng)4個字節(jié),例如:00000001000000000000000000000000字符型的定義與輸出:用char定義字符變量,例如:
charc=’?’;//系統(tǒng)把“?”的ASCII代碼63賦給變量c可用強制轉(zhuǎn)換方式控制字符的輸出00110001(3)浮點型數(shù)據(jù)浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)在C語言中,實數(shù)是以指數(shù)形式存放在內(nèi)存存儲單位中的小數(shù)部分指數(shù)數(shù)符以圓周率PI的近似值3.14159為例,可寫成:3.14159x100、0.314159x101、0.0314159x102、31.4159x10-1等形式。由于小數(shù)點位置可以浮動,故稱為浮點數(shù)。規(guī)格化指數(shù)形式:小數(shù)點前數(shù)字為0、小數(shù)點的第1位數(shù)字非0 對于一個實數(shù)來說,其規(guī)格化指數(shù)形式只有一種,例如: 0.314159x101符合要求,0.0314159x102、31.4159x10-1等則不符合要求指數(shù)表示了數(shù)據(jù)的大小,尾數(shù)表示了數(shù)據(jù)的精度。通常用e或E后面帶整數(shù)表示10的多少次方。2.2常量概念:在程序運行過程中,其值不能被改變的量 包括:整型常量、實型常量、字符常量和字符串常量等如12,0,-3為整型常量4.6,-1.23為實型常量,包含在兩個單撇號之間的字符為字符常量,如′a′,′x′。
2.2.1什么是常量?2.2.2數(shù)值常量整型常量:在整數(shù)末尾使用u和l字母:若后綴有字母u(大、小寫等效),則硬性規(guī)定它為一個無符號整型(unsignedint)數(shù);若后綴有字母l(大、小寫等效),則硬性規(guī)定它為一個長整型(longint)數(shù);在一個整數(shù)的末尾,可以同時使用u和l,并且對排列無要求。如25U,0327UL,0x3ffbL,648LU等都是整數(shù)。十進制整數(shù):由正號(+)或負號(-)開始的、接著為首位非0的若干個十進制數(shù)字所組成。如38,-25,+120,74286等八進制整數(shù):由首位數(shù)字為0的后接若干個八進制數(shù)字(借用十進制數(shù)字中的0-7)所組成。八進制整數(shù)不帶符號位,隱含為正數(shù)。如0,012,0377,04056等等十六進制整數(shù):由數(shù)字0和字母x(大、小寫均可)開始的、后接若干個十六進制數(shù)字(0-9,A-F或a-f)所組成。同八進制整數(shù)一樣,十六進制整數(shù)也均為正數(shù)。如0x0,0X25,0x1ff,0x30CA等2.2.2數(shù)值常量2)浮點常量:格式:有兩種小數(shù)形式:1.23,0.23,-999.34,3.14159,…指數(shù)形式:1.23e5,2.3e-1,-0.999E3,…
(注:e或E均可,e前是小數(shù),e后是整數(shù))通常,浮點數(shù)當作double型看待??稍谖膊考觙或F指定為float型2.2.2字符常量1)普通的字符常量:用一對單引號括起來的一個字符,形式為:‘單字符’,如:’a’,’%’,’A’等,區(qū)分大小寫 注意:’ab’是錯誤的,為什么?2)轉(zhuǎn)義字符常量:格式:\特定字符性質(zhì):改變原先字符的含義,實現(xiàn)特定功能 例如:\n(換行功能),\t(下一制表位)還允許用反斜線引導一個具有1至3位的八進制整數(shù)(形式:’\ddd’)或一個以字母x作為開始標記的具有1至2位的十六進制整數(shù)(形式:’\xhh’),對應的字符就是以這個整數(shù)作為ASCII碼的字符 例如:\101、\x41均表示ASCII為65的字符,即‘A’常用的轉(zhuǎn)義字符:轉(zhuǎn)義字符含義ASCII碼值(十進制)\a響鈴(bell)7\b退格(backspace)8\n換行(newline)10\r回車(carriagereturn)13\t水平制表(horizontaltab)9\v垂直制表(verticaltab)11\\反斜杠92\’單引號39\”雙引號34\0空格符(null)0\ddd任意字符3位八進制數(shù)\xhh任意字符2位十六進制數(shù)3)字符數(shù)據(jù)在內(nèi)存中的存儲形式相關(guān)知識:字符數(shù)據(jù)存放在內(nèi)存的是其ASCII碼,可與當作整數(shù)處理;熟悉常用字符的ASCII(十進制數(shù)):A~Z(65~90),a~z(97~122),0~9(48~57),空格(32),null(0)等#include<iostream>usingnamespacestd;intmain(){ inti,j; i='A'; j='B'; cout<<i<<""<<j<<'\n'; return0;}例3將字符賦給整型變量#include<iostream>usingnamespacestd;intmain(){ charc1,c2; c1='A'; c2='B'; c1=c1+32; c2=c2+32;cout<<c1<<""<<c2<<endl; return0;}例4字符數(shù)據(jù)與整數(shù)進行算術(shù)運算4)字符串常量:格式:“…”,即:用一對雙引號括起來的字符序列(字符個數(shù)可以0、1或多個,也可以是轉(zhuǎn)義字符),起標識、提示作用。字符串以雙引號為定界符,雙引號不作為字符串的一部分。如:“Hello”,“GoodMorning!”,“廣州大學”…長度:字符串的字符數(shù)。如:“Hello”的長度為5.存儲:在內(nèi)存中占一串連續(xù)的存儲單元,系統(tǒng)自動在字符串的末尾加以字符串結(jié)束標志,即轉(zhuǎn)義字符‘\0’。 Hello‘\0’特別注意:“字符串”與“字符型數(shù)據(jù)”是兩個完全不同的概念,它們在定界符、字符個數(shù)、結(jié)束標識上不同(以后講解)占6個存儲單元問題:分辨哪些是字符常量?哪些是字符串?
“sise”、”?”、””、‘!’、‘\x20’、“”5)怎樣確定常量的類型?字符常量:由單撇號(‘’)括起來的單個字符或轉(zhuǎn)義字符字符串常量:由雙撇號(“”)括起來的單個字符或轉(zhuǎn)義字符整型常量:不帶小數(shù)點的數(shù)值,系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點型常量:凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實數(shù)24格式:#define符號常量 例如:#definenum50處理:編譯前,預處理器將所此符號置換成常量。由此可知,符號常量不同于變量,不占用內(nèi)存空間好處:做到“一改全改”2.2.4符號常量2.2常量例2輸入圓的半徑,輸出其周長、面積
解題思路:
圓的半徑用cout<<"輸入,再用公式計算其周長、面積圓的周長、面積計算都要用PI,可用符號常量表示#include<iostream>usingnamespacestd;#definePI3.14159intmain(){ floatr,c,s; cout<<"請輸入圓的半徑:“; cin>>r; c=2*PI*r; s=PI*r*r; cout<<s;return0;}思考題:請用常變量方法修改此程序,功能不變2.3.1什么是變量:在程序運行過程中,其值可以被改變的量。2.3變量2.3.2變量命名規(guī)則
(1)標識符在C語言中,有許多符號需要命名,如:變量名、函數(shù)名、數(shù)組名等,這些符號稱為標識符。inta=3;標識符的命名規(guī)則:由字母、數(shù)字、下劃線組成,并且第一個字符必須為字母或下劃線。合法標識符:area、PI、a_array、price等非法標識符:456p、cade-y、x.y、a&b等不同的C++語言編譯系統(tǒng)所規(guī)定的標識符長度可能不同建議:命名時最好“見名知意”,多采用單詞、拼音、下劃線等標識符有三類:關(guān)鍵字:C語言預先規(guī)定的一批有固定含義的標識符,不能另作他用autodouble
int
structcase else long switchbreakenum
register
typedefchar
extern
return
unionconst
float
short
unsignedcontinue
for
signed
voiddefault
goto
sizeof
volatiledo
if
static
while等
預定義標識符:C語言預先定義并有特定含義的標識符,如:預處理命令(define)。不建議另作他用用戶標識符:用戶定義的標識符,如:變量名、函數(shù)名、數(shù)組名等,最好“見名知意”變量定義:數(shù)據(jù)類型變量名1[,變量名2,…]; 實質(zhì):在編譯時為其分配相應的存儲單元 例如:inta,b,c;floatr;doubleroot1,root2;說明:變量定義時,都有一個確定的數(shù)據(jù)類型,這樣才能分配存儲單元;C語言規(guī)定,變量要“先定義,后使用”,編譯時系統(tǒng)進行檢查。例如,如果在定義時為intstudent;而在執(zhí)行語句中錯寫成statent編譯時就會輸出“變量statent未經(jīng)聲明”的信息變量定義后,如果未賦值,則其值是不確定的。應避免這種情況的出現(xiàn)變量初始化:數(shù)據(jù)類型變量名1=初值[,變量名2=初值,…];
功能:將變量定義、賦值“合二為一”2.3.3定義變量2.3.4為變量賦初值定義變量時對它賦予一個初值,這稱為變量初始化。初值可以是常量,也可以是一個有確定值的表達式。如floata,b=5.78*3.5,c=2*sin(2.0);2.3.5常變量在定義變量時,如果加上關(guān)鍵字const,則變量的值在程序運行期間不能改變,這種變量稱為常變量(constantvariable)。例如,constinta=3;2.4C++的運算符運算符(操作符):是對數(shù)據(jù)進行運算的符號操作數(shù)(運算對象):參與運算的數(shù)據(jù)表達式:由操作數(shù)和操作符連接而成的有效的式子。表達式可以嵌套,例如:2+3+(5*sizeof(int))/4(1)一些概念運算符分類:(按操作數(shù)個數(shù)的多少劃分)單目運算符:一般位于操作數(shù)的前面,如:正負號(+、-)雙目運算符:運算符一般位于兩個操作數(shù)之間,如:a+b三目運算符:只有一個,即為條件運算符運算符分類:(按功能劃分)算術(shù)運算符:+(加)-(減)*(乘)/(除)%(求余)++(自加)--(自減)關(guān)系運算符:>(大于)<(小于)==(等于)>=(大于或等于)<=(小于或等于)?。剑ú坏扔谶壿嬤\算符:&&與||或!非位運算符:<<左移>>右移等賦值運算符:=條件運算符:?:逗號運算符:,在學習運算符時要掌握幾個要點:符號:怎樣書寫功能:做什么目數(shù):操作數(shù)的多少優(yōu)先級:用來決定它在表達式中的運算次序。如計算表達式a+b*(c-d)/e時,運算次序依次為:-,*,/,+。結(jié)合性:是指表達式中出現(xiàn)同等優(yōu)先級的操作符時,該先做哪個操作的規(guī)定從左到右:如d=a+b-c;
(大多數(shù)表達式)從右到左:如d=a=3;//C++規(guī)定,賦值號是先右后左,先做a=3,其結(jié)果再賦給d
(單目、賦值、條件運算符適用)例如:inta=3;//a是變量,所以a是左值
constintb=4;//b是常量,所以b不是左值。顯然常量不是左值,因為C語言規(guī)定常量的值一旦確定就不能更改的。右值:只能出現(xiàn)在賦值表達式的右邊。左值表達式也可以作為右值表達式。例如:
inta,b=6;
a=b;
//b是變量,是左值,此處作右值
a=8;
//8是常量,只能作右值,不能作左值左值和右值:
左值:是能出現(xiàn)在賦值表達式左邊的表達式。左值表達式具有存放數(shù)據(jù)的空間,而且存放是允許的2.5.1基本雙目運算符(5個)+,-,*:含義與數(shù)學上相同;(注:兩個數(shù)相乘時,*不能省略)/
: 對于整型數(shù)則為除法取整操作,例如,5/2得到結(jié)果2;
如果除數(shù)或被除數(shù)中有一個為負值,舍入方向不固定。例如,-5/2,有的系統(tǒng)中得到的結(jié)果為-2,在有的系統(tǒng)中則得到結(jié)果為-3。 對于浮點數(shù)則為通常意義的除法,例如,5.0/2.0得到結(jié)果為2.5 由此可見,/操作符可以對不同的數(shù)據(jù)類型進行不同的操作。2.5算術(shù)運算符與表達式%只能對整型數(shù)進行操作,其操作意義取余。例如,5%2得到結(jié)果1??捎脕砼袛嗾麛?shù)的奇偶性
不允許對浮點數(shù)進行%運算,如果對浮點數(shù)操作,則會引起編譯錯誤。表達式:利用這些運算符和數(shù)學函數(shù)可以構(gòu)造許多復雜的式子。例如:計算圓面積:area=3.14*r*r;已知直角三角形的兩條直角邊,求斜邊長度:
c=sqrt(a*a+b*b);2.5.2單目運算符(2個)
++、--功能:使變量的值加1或減1前綴++i、--i
:在使用i之前,先使i的值加(減)1后綴i++、i--
:在使用i之后,再使i的值加(減)1例如:intp;inti=3;p=++i;//i的值:4,p的值:4 intq;intj=3;q=j++;//j的值:4,q的值:3前綴與后綴自增(減)運算符的比較:對自增(減)的作用是相同的,均能夠增加1(減少1);對當中的取值是有影響的,涉及先取值,還后取值問題。說明:++、--只適合于變量,不能用于常量,5++、a++b、(a++b)++都是錯誤的。2.5算術(shù)運算符與表達式#include<iostream>usingnamespacestd;intmain(){ inta=10; cout<<"a="<<a<<",執(zhí)行b=--a;語句后:"; intb=--a; //相當于a=a-1;b=a; cout<<"a="<<a<<",b="<<b<<endl;
cout<<"a="<<a<<",執(zhí)行b=--a;語句后:"; intc=a--; //相當于a=a-1;b=a; cout<<"a="<<a<<",c="<<c<<endl; return0;}例5前綴與后綴自減運算符(--)的比較說明:若用自增、自減運算符構(gòu)成表達式,則越簡單越好,最好是類似“a++”或“++a”這種表達式,以增強代碼的可讀性。2.5.3算術(shù)表達式和運算符的優(yōu)先級2.5算術(shù)運算符與表達式C++語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。原則:在求解表達式時,先按運算符的優(yōu)先級別高低次序執(zhí)行,先乘除后加減。如有表達式a-b*c,b的左側(cè)為減號,右側(cè)為乘號,而乘號優(yōu)先于減號,因此,相當于a-(b*c)。如果在一個運算對象兩側(cè)的運算符的優(yōu)先級別相同,如a-b+c,則按規(guī)定的“結(jié)合方向”處理結(jié)合性
算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右,因此b先與減號結(jié)合,執(zhí)行a-b的運算,再執(zhí)行加c的運算?!白宰笾劣业慕Y(jié)合方向”又稱“左結(jié)合性”,即運算對象先與左面的運算符結(jié)合。賦值運算符的結(jié)合方向為“自右至左”,即右結(jié)合性。2.5.4表達式中各類數(shù)值型數(shù)據(jù)間的混合運算在表達式中常遇到不同類型數(shù)據(jù)之間進行運算,如10+'a'+1.5-0.1*'b'2.5算術(shù)運算符與表達式在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換的規(guī)則按圖所示。2.5.5強制類型轉(zhuǎn)換有兩種不同方式:隱式轉(zhuǎn)換(自動轉(zhuǎn)換):不同類型數(shù)據(jù)進行混合運算,會將兩個操作數(shù)自動作適當?shù)念愋娃D(zhuǎn)換,然后進行運算。轉(zhuǎn)換的方向見右圖:2.5算術(shù)運算符與表達式charshortintlongintunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble說明:+、-、*、/運算的兩個數(shù)中有一個數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進行運算;如果int型與float或double型數(shù)據(jù)進行運算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進行運算,結(jié)果是double型;char型數(shù)據(jù)與int型數(shù)據(jù)進行運算,就是把字符的ASCII代碼與整型數(shù)據(jù)進行運算。顯式轉(zhuǎn)換(強制轉(zhuǎn)換):格式:類型名
(表達式)或(類型名)
表達式或(類型名)(表達式)例如:(double)a //將a轉(zhuǎn)換成double類型 (int)(x+y) //將x+y的值轉(zhuǎn)換成int型 (float)(5%3) //將5%3的值轉(zhuǎn)換成float型#include<iostream>usingnamespacestd;intmain(){floatx;inti;x=3.6;i=(int)x;cout<<"x="<<x<<",i="<<i<<endl;return0;}例6強制類型轉(zhuǎn)換說明:若用自增、自減運算符構(gòu)成表達式,則越簡單越好,最好是類似“a++”或“++a”這種表達式,以增強代碼的可讀性。2.6.1賦值運算符2.6賦值運算符與表達式格式:變量=表達式功能:先計算表達式的值,再賦給左邊的變量,即:把表達式的值存入左邊變量所標識的存儲單元中例如:c=max(a,b);//將函數(shù)返回值存放到變量c標識的存儲單元說明:=是“賦值”的含義,不是數(shù)學中的“等于號”,例如:n=n+1是將n標識存儲單元的值加1后存回到該單元;左邊必須是左值,通常為變量,不能是常量,a+b=c是錯誤的。x=y執(zhí)行后,改變的是x值,y值不變;=兩邊的數(shù)據(jù)類型要求相同,若不同,則在賦值前自動把右邊表達式的值轉(zhuǎn)換為與左邊類型相同的值,再賦給左邊變量。
如執(zhí)行x=20/3.0時,若x為整型,則得到的x值為6(舍去小數(shù)部分);2.6.2賦值過程中的類型轉(zhuǎn)換2.6賦值運算符與表達式兩側(cè)類型一致時,直接賦值;兩側(cè)類型不一致,但都是算術(shù)類型時,自動將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值,請注意以下情況:float型變量=double型值;(損失精度)int型變量=char型值;(賦字符的ASCII碼(整數(shù)值))少字節(jié)整型變量=多字節(jié)整型值;(賦低字節(jié)數(shù)值,即截斷)定義變量時要防止數(shù)據(jù)溢出。2.6.3復合賦值運算符2.6賦值運算符與表達式包括:+=、-=、*=、/=、%=等功能:把右邊表達式的值同左邊變量的值進行相應運算后,再把這個運算結(jié)果賦給左邊的變量,該復合賦值表達式的值也就是保存在左邊變量中的值; 例如: x+=y;相當于x=x+y; x-=y;相當于x=x-y; x*=y;相當于x=x*y; x/=y;相當于x=x/y; x%=y;相當于x=x%y;已知:a=6,計算表達式:a+=a-=a+a的值思路:賦值運算符結(jié)合性是從右到左①先計算表達式a+a的值,得到12(a=6);②再計算表達式a-=12(即a=a-12)值,得到a=-6,表達式值也為-6;③最后計算a+=-6(即a=a+(-6)值,得到a=-12,表達式值為-12。優(yōu)點:簡潔(可讀性也不差),編譯速度快思考44已知:a=10,b=15,c=20。請說出下列表達式的值:a=b=c=3;a=5+(d=7);a=(b=6)/(c=2);cout<<(a=b);a=(a=b)=b*c;2.6.4賦值表達式2.6賦值運算符與表達式格式:變量=表達式賦值表達式除了給左邊變量賦值外,表達式本身也有值,其值為左邊變量的值,也就是說:式子x=y=0是允許的,相當于x=(y=0),即先給y賦0,再賦表達式y(tǒng)=0的值(也為0)給x,這樣x、y的值都賦0值;優(yōu)先級:只高于逗號運算符,比其它運算符級別都低結(jié)合性:從右到左
例如:a=b=c=4123例7:編程實現(xiàn):輸入華氏溫度,輸出對應的攝氏溫度。#include<iostream>usingnamespacestd;intmain(){ floatf,c; cout<<"請輸入華氏溫度:"; cin>>f; c=5.0/9*(f-32); cout<<"華氏溫度:"<<f<<",對應攝氏溫度:"<<c<<endl; return0;}思路:①程序的基本結(jié)構(gòu)(預處理指令、main());②華氏溫度轉(zhuǎn)換為攝氏溫度的公式:c=5*(f-32)/9;③定義哪些變量例8:計算存款利息:有1000元,想存一年。有三種可選方案:(1)活期,年利率為r1;(2)一年定期,年利率為r2;(3)存兩次半年期,年利率為r3。問:哪一種方案更合算?#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ floatp0=1000,p1,p2,p3,r1=0.005,r2=0.035,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合并同類項解元次方程說課稿
- 電商項目規(guī)劃
- 美術(shù)館黃金屋租賃合同
- 休閑娛樂場所消火栓施工合同
- 會計師事務所出納人員聘用協(xié)議
- 老年大學教師勞動合同范本
- 羽絨制品維修工聘用合同模板
- 農(nóng)藥采購合同管理
- 電梯工程師招聘協(xié)議
- 房地產(chǎn)開發(fā)招標廉政責任
- JJG 707-2014扭矩扳子行業(yè)標準
- 2024醫(yī)保練兵理論知識考試題庫(濃縮500題)
- 三重一大培訓課件
- 【增加多場景】員工使用公司車輛協(xié)議
- 單孔腹腔鏡手術(shù)
- 2024年度2024行政復議法培訓
- 車輛托運合同
- 2023土的分散性判別試驗規(guī)程
- 牧原招聘測評試題
- 29.4常見腫瘤標志物講解
- 大學生職業(yè)生涯規(guī)劃環(huán)境設(shè)計 (模板)
評論
0/150
提交評論