版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1第2章
數(shù)據(jù)類型、運算符與表達式22.1 C++的字符集和關鍵字
語文作文不能出現(xiàn)英語!32.1 C++的字符集和關鍵字
字符集由52個字母、10個數(shù)字、30個特殊字符組成所有C++程序(忽略換行符、制表符、注釋和字符串常量中的內(nèi)容)都由字符集中的字符按一定規(guī)則構成42.1 C++的字符集和關鍵字
C++標識符是滿足如下條件的一串字符由一個字母(a~z,A~Z)或下劃線(_)開頭其它部分可以由字母、下劃線或數(shù)字(0~9)組成;大小有別只有前32個字符有效C++的63個關鍵字也是標識符,稱為保留字,不能作其它用。另外,C++還使用了一些標識符作預處理命令、庫函數(shù)的名字,稱為預定義標識符,可以被重定義,但不提倡。5標識符——課堂練習挑出一個不正確的標識符
ABCabca_bcab.c選擇一個正確的標識符
%xa+ba123test!挑出錯誤的標識符room3-1
_SUM
student
num1
Mr.Zhu
_1_2_3
MyName
myname
my_name
2men6問題:以什么數(shù)據(jù)形式表示算法中涉及的數(shù)據(jù)(實體、對象)?學生人數(shù)商品個數(shù)商品價格學生姓名邊長值角度值分數(shù)商品名稱正弦值字符類型整型實型數(shù)值類型72.2 數(shù)據(jù)類型
82.2 基本數(shù)據(jù)類型
每個C++程序中的數(shù)據(jù)對象(如2、x1、x1+2)都有確定的唯一的數(shù)據(jù)類型C++的數(shù)據(jù)類型包括基本數(shù)據(jù)類型和復合數(shù)據(jù)類型基本數(shù)據(jù)類型有整型、浮點型、字符型、布爾型不同數(shù)據(jù)類型有自己的取值范圍和所允許的操作(運算)C++沒有統(tǒng)一規(guī)定各類型數(shù)據(jù)的數(shù)據(jù)范圍、精度及在內(nèi)存中所占字節(jié)數(shù),由編譯系統(tǒng)做出安排92.2 基本數(shù)據(jù)類型—整型
整型(可進行算術、關系、邏輯等運算)signedshortint(簡寫為short)signedint(簡寫為int)signedlongint(簡寫為long)unsignedshortint(簡寫為
unsignedshort)unsignedint(簡寫為unsigned)unsignedlongint(簡寫為
unsignedlong)注意:各類型所占字節(jié)數(shù)和具體計算機有關類型符號關鍵字數(shù)的表示范圍所占字節(jié)數(shù)整型字符型實型有無[signed]int2-32768~32767[signed]short2-32768~32767[signed]long4-2147483648~21474836472unsigned[int]0~6553540~4294967295unsignedlongunsignedshort20~65535float43.4e-38~3.4e38有double81.7e-308~1.7e308有unsignedchar1-128~127無[signed]char10~255longdouble163.4e-4932~3.4e4932表以16位計算機為例112.2 基本數(shù)據(jù)類型—浮點型
浮點型(實型)float(浮點型)double(雙精度型)longdouble(長雙精度型)均有符號注意:各類型所占字節(jié)數(shù)和具體計算機有關類型符號關鍵字數(shù)的表示范圍所占字節(jié)數(shù)整型字符型實型有無[signed]int2-32768~32767[signed]short2-32768~32767[signed]long4-2147483648~21474836472unsigned[int]0~6553540~4294967295unsignedlongunsignedshort20~65535float43.4e-38~3.4e38有double81.7e-308~1.7e308有unsignedchar1-128~127無[signed]char10~255longdouble163.4e-4932~3.4e4932表以16位計算機為例13實型數(shù)據(jù)的舍入誤差由于實型數(shù)據(jù)表示的有效數(shù)字有限,將有效位以外的數(shù)字舍去造成誤差舉例floata=123456.789e5,b;b=a+20;/*b=12345678920?*/printf("a=%f\nb=%f\n",a,b);a=12345678848.000000b=12345678868.000000142.2 基本數(shù)據(jù)類型—字符型
字符型[signed]charunsignedchar實質(zhì)是占一個字節(jié)的整型數(shù)ASCII表:為每個合法的字符定義一個整數(shù)允許的操作:和整型相同注意:各類型所占字節(jié)數(shù)和具體計算機有關類型符號關鍵字數(shù)的表示范圍所占字節(jié)數(shù)整型字符型實型有無[signed]int2-32768~32767[signed]short2-32768~32767[signed]long4-2147483648~21474836472unsigned[int]0~6553540~4294967295unsignedlongunsignedshort20~65535float43.4e-38~3.4e38有double81.7e-308~1.7e308有unsignedchar1-128~127無[signed]char10~255longdouble163.4e-4932~3.4e4932表以16位計算機為例162.2 基本數(shù)據(jù)類型—布爾型
布爾型bool值為true和false可以當作整數(shù)用(true一般為1,false為0)把其它類型的值轉(zhuǎn)換為布爾值時,非零值轉(zhuǎn)換為true,零值轉(zhuǎn)換為false注意:各類型所占字節(jié)數(shù)和具體計算機有關類型符號關鍵字數(shù)的表示范圍所占字節(jié)數(shù)整型字符型實型有無[signed]int2-32768~32767[signed]short2-32768~32767[signed]long4-2147483648~21474836472unsigned[int]0~6553540~4294967295unsignedlongunsignedshort20~65535float43.4e-38~3.4e38有double81.7e-308~1.7e308有unsignedchar1-128~127無[signed]char10~255longdouble163.4e-4932~3.4e4932表以16位計算機為例但總是
long型≥int型≥short型≥char型longdouble型≥double型≥float型182.3 變量與常量
程序運行過程中,其值是否能被改變?變量是常量不是19定義程序運行過程中,其值不能被改變的量分類整型常量實型常量字符型常量布爾型常量(false,true)符號常量:用一個標識符代表的常量常量字面常量:從字面形式即可判斷常量示例#definePRICE2.8main(){intnum; floattotal=0;num=10;total=num*PRICE;printf("total=%f",total);}符號常量total=num*2.8;字面常量符號常量的定義格式#define符號常量常量變量21整型常量表示形式十進制整數(shù):由數(shù)字0~9組成,除0外不能以0開始八進制整數(shù):以數(shù)字0為前綴,由數(shù)字0~7組成十六進制整數(shù):以0X或0x為前綴,由數(shù)字0~9、A~F(或a~f)組成可以加整型后綴,無后綴時作為int類型數(shù)據(jù)12,30√0450123,040√0390x12A,0X96
√123L,421L,0L22指數(shù)形式:由整數(shù)(或小數(shù))、e(或E)、可選的正負號、整數(shù)順序組成表示形式十進制小數(shù):由0~9和小數(shù)點(必須)組成,整數(shù)和小數(shù)部分都可省略,但不能同時省略舉例:123.4e-5表示123.4×10-5錯例:,e1、12e、1.2e3.4、.e5、e實型常量(浮點常量)0.123,.123123.345e213.2E+2.5e-2注意:e或E前面必須有數(shù)字,后面必須是整數(shù)(可以帶+、-)一個實數(shù)可以有多種指數(shù)表示形式舉例:1234.可表示成:1234e0
123.4E1
12.34
e2.1234E41.234E3可以加浮點后綴,無后綴時作為double類型數(shù)據(jù)23用一對單引號括起來的一個普通字符(不包括‘和\)或轉(zhuǎn)義字符(也稱轉(zhuǎn)義序列)字符型常量'a','?','3','#'√'abc','','\','啊'轉(zhuǎn)義字符是用一個轉(zhuǎn)義標識\(反斜線)開頭的字符序列。如:\n,\xab轉(zhuǎn)義字符主要表示難以用一般字符表示的單個字節(jié)24轉(zhuǎn)義字符注意:1)轉(zhuǎn)義字符常量只代表一個字符(占一個字節(jié))。2)反斜杠后的八進制數(shù)可以不用0開頭3)反斜杠后的十六進制數(shù)只能以小寫字母x開頭,不允許用大寫字母X或0x開頭\n-換行符例:\101-'A'
\134-'\'
25轉(zhuǎn)義字符的使用示例#include<stdio.h>#include<iostream.h>intmain(){ cout<<'\''<<'\n'; cout<<'\"'<<'\n'; cout<<'\\'<<'\n'; cout<<"\x4f\x4b\041\n"; return0;}一個字符常量占一個字節(jié)的空間字符常量以其ASCII碼形式存放01100001'a'(ASCII=97)00110010'2'(ASCII=50)字符常量在內(nèi)存中的存放形式作為char類型數(shù)據(jù),實質(zhì)上是一個字節(jié)長度的整型數(shù)據(jù),數(shù)值是其ASCII碼27長度為0的字符串(即一個字符都沒有的字符串)稱為空串,表示為""(一對緊連的雙引號)。字符串常量用一對雙引號括起來的字符序列。字符串中字符的個數(shù)稱為字符串長度。"a","3.14",""
"Howareyou\n"例如,"Howdoyoudo!"、"Goodmorning!",都是字符串常量,其長度分別為14和13(空格也是一個字符)。28在內(nèi)存中字符串中的每個字符以其ASCII值的二進制形式按順序存放。系統(tǒng)自動在字符串的末尾加一個空字符‘\0’
(值為0,即符號常量NULL)作為字符串的結(jié)束標志。'\0'不可顯示,也不引起任何控制動作。例如字符串"china"在內(nèi)存中的實際存儲如下:字符串常量的存儲形式注意:
在書寫字符串常量時,不必加結(jié)束字符'\0',否則畫蛇添足。輸出字符串時'\0'不輸出'c''h''i''n''a''\0'010000110100100001001001010011100100001000000000實際占用6字節(jié)而非5字節(jié)內(nèi)存空間。29課堂練習-字符串存放'\0''a''\0'0970"""a"'a'97'a'
"a"與'a'是不同的30字符常量與字符串常量的區(qū)別定界符不同:字符常量使用單引號,而字符串常量使用雙引號;長度不同:字符常量的長度固定為1,而字符串常量的長度,可以是0,也可以是某個整數(shù);存儲要求不同:字符常量存儲的是字符的ASCII碼值,而字符串常量,除了要存儲串中字符的ASCII碼值外,還要存儲一個結(jié)束標志'\0'。31符號常量習慣上用大寫字母表示符號常量#definePI3.14注意:在一個程序中不能對同一個符號常量定義多次如:#definePI3.14#definePI3.141596使用之前必須預先定義。32例1計算圓的周長和面積#include<iostream.h>intmain(){intr=4;floats,l;l=2*3.14*r;s=3.14*r*r;cout<<"l="<<l<<endl<<"s="<<s<<endl;return0;}符號常量的優(yōu)點示例#definePI3.14PIPI3.14159√含義清晰√一改全改33變量變量的含義
3a變量名變量值存儲單元一個變量有一個名字在內(nèi)存中占據(jù)一定的存儲單元該存儲單元中存放該變量的值34變量變量的定義定義形式:變量類型變量名列表原則:先定義,后使用inta,b,c;a=2;b=3;c=a+b;inta=2,b=3,c;c=a+b;35注意C++中沒有字符串變量不能把一個字符串賦值給一個字符型變量charname;name="Mary";()362.4 類型轉(zhuǎn)換
提升規(guī)則
如果將數(shù)值轉(zhuǎn)換成較高的類型則可以通過隱式的類型轉(zhuǎn)換,如3.14+2如果要將數(shù)值轉(zhuǎn)換成較低的類型,必須顯式地使用強制類型轉(zhuǎn)換,如(int)3.14;數(shù)據(jù)類型的表示范圍和精度:P26—表2-6372.4 類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換當表達式中運算符所操作的數(shù)據(jù)的類型與實際要求不符時,要進行隱式類型轉(zhuǎn)換,使表達式中各數(shù)據(jù)的類型符合要求算術表達式中隱式類型轉(zhuǎn)換規(guī)則是:把表達式中不同類型的數(shù)據(jù)轉(zhuǎn)換成精度最高、占用內(nèi)存最多的那個數(shù)據(jù)的類型。在類型不沖突的賦值表達式中,自動將賦值運算符右邊表達式的值的類型轉(zhuǎn)換成左邊變量的類型。382.4 類型轉(zhuǎn)換
強制類型轉(zhuǎn)換(又稱顯式類型轉(zhuǎn)換)形式為:(類型)表達式
或
類型(表達式)例如:(double)3/2或
double(3)/2(double)(3/2)或
double(3/2)39類型轉(zhuǎn)換示例(1)將實型數(shù)據(jù)(包括單精度、雙精度)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。inti;i=3.56;/*i的值為3*/將整型數(shù)據(jù)賦給實型變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。floatf;doubled;f=23;/*f的值為23.00000*/d=23;/*d的值為23.00000000000*/將double型數(shù)據(jù)賦給float型變量時,截取前面7位有效數(shù)字,存儲到變量中。40類型轉(zhuǎn)換示例(2)將字符型數(shù)據(jù)賦給整型變量時,保持原值不變將int、short、long型數(shù)據(jù)賦給字符型變量時,將其低8位原封不動地送到字符型變量。001000010010000100000001inti=289;charc;c=i;ci412.5 運算符和表達式
主要分為:算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符等
根據(jù)組成表達式的運算符的不同,表達式可以分為算術表達式、關系表達式、邏輯表達式、位運算表達式、逗號表達式和賦值表達式等。
42運算符的優(yōu)先級結(jié)合性運算符的優(yōu)先級和結(jié)合性a+b*c–d/e乘除比加減優(yōu)先級高(a+b)*(c-d)/e用圓括號()改變運算符的執(zhí)行次序同一個表達式中不同運算符進行運算的先后次序表達式中運算符優(yōu)先級相同時的運算順序通常單目、三目和雙目中的賦值運算符是右結(jié)合性,其余為左結(jié)合性通常單目運算符的優(yōu)先級高于雙目和三目運算符a+b-c+和-的結(jié)合方向都是從左向右,稱為左結(jié)合性
a=b=1=的結(jié)合方向是從右向左,稱為右結(jié)合性43優(yōu)先級與結(jié)合性總結(jié)不同優(yōu)先級的運算符,運算順序按優(yōu)先級由高到低執(zhí)行同一優(yōu)先級的運算符,運算順序按結(jié)合性的規(guī)定執(zhí)行可以使用圓括號()明確運算次序,圓括號()具有最高的優(yōu)先級44順口溜醋壇酸味灌味落跳福豆醋-初等:()[]->
.
壇-單目:++--!~-負號(類型)*指針&取地址sizeof長度酸-算術:*/%+-減味-位移:<<>>灌-關系:<<=>>===等于!=不等于味-位邏:&按位與^按位異或|按位或落-邏輯:&&邏輯與||邏輯或跳-條件:三目:?:福-賦值:=+=-=*=/=%=>>=<<=&=^=|=豆-逗號:,45表達式用運算符將操作數(shù)連接起來所構成的式子。2.5*b-6/c+'z'-max(x,y)常量變量有返回值的函數(shù)調(diào)用i=(b<a*c)表達式單個的操作數(shù)也是表達式注意:各運算符所能連接的操作數(shù)的個數(shù)、位置及類型都有各自的規(guī)定。表達式都有值。462.5 運算符和表達式
一元算術運算+
正,運算結(jié)果同操作數(shù);-負,運算結(jié)果為操作數(shù)的負數(shù);
++自增運算符;
--自減運算符;47自增、自減運算符示例++i,--i前綴形式:運算符在變量前面,表示對變量先自增或自減,然后再參與其它運算,運算結(jié)果具有左值性質(zhì)。先加(減)后用。i++,i--后綴形式:運算符在變量后面,表示變量先參與其它運算,再自增或自減。先用后加(減)。48課堂練習—++、--運算符a=1;b=a++;a=1;b=++a;a=1;b=a--;a=1;b=--a;a為2;b為1;a為2;b為2;a為0;b為1;a為0;b為=0;49++、--運算符舉例#include<stdio.h>voidmain(){inti=3,j=10,m,n,p,q;m=++i; n=i++;p=--j; q=j--;printf(”i=%d,m=%d,n=%d\n”,i,m,n);printf(”j=%d,p=%d,q=%d\n”,j,p,q);}i=5,m=4,n=4j=8,p=9,q=950++、--運算符使用注意具有右結(jié)合性在有++和--的表達式中,盡量不要使用難于理解或容易出錯的表達式。不能用于常量和一般表達式inta,b,c;a=(b+c)++; /*非法!!!*/a=34++; /*非法!!!*/512.5 運算符和表達式
二元算術運算+
加法,運算結(jié)果為兩個操作數(shù)的和;-減法,運算結(jié)果為左操作數(shù)減去右操作數(shù)的差;
*乘法,運算結(jié)果為兩個操作數(shù)的乘積;
/除法,運算結(jié)果為左操作數(shù)除以右操作數(shù)的商;
%
求余,運算結(jié)果為左操作數(shù)除以右操作數(shù)的余數(shù),只用于整型數(shù)據(jù),其結(jié)果也是整型;522.5 運算符和表達式
二元算術運算+-*/,運算的兩個數(shù)中有一個為float型數(shù)據(jù),則運算的結(jié)果為double型。因為在做運算時,所有的float數(shù)據(jù)都做double型數(shù)據(jù)處理。兩個整數(shù)作/運算時,其結(jié)果為整數(shù)。但如果除數(shù)或被除數(shù)中有一個為負值時,具體結(jié)果取決于C++在具體機器上的實現(xiàn)。一般來說,大多數(shù)實現(xiàn)都采取“向零取整”,即直接截去商的小數(shù)部分532.5 運算符和表達式
二元算術運算%只能用于整型數(shù)據(jù),其運算結(jié)果也是整形數(shù)據(jù)。C++規(guī)定,如果兩個操作數(shù)都是正的,那么結(jié)果一定是正的;否則,要看C++的具體實現(xiàn),C++標準對這種情況未作明確規(guī)定,如在MicrosoftC++實現(xiàn)中,求余運算%的結(jié)果總是與左操作數(shù)的符號一致。
注:不同類型的數(shù)據(jù)進行運算,要先轉(zhuǎn)換成同一類型。54算術運算示例注意:兩個整數(shù)作/運算,其結(jié)果為商的整數(shù)部分,商的小數(shù)部分直接截去;參與%運算的操作數(shù)必須是整數(shù),否則出錯;其結(jié)果也是整數(shù)。7/5
結(jié)果為17%5
結(jié)果為2%運算結(jié)果的符號同左操作數(shù)。20%6結(jié)果為220%-6結(jié)果為2-20%6結(jié)果為-2-20%-6結(jié)果為-2552.5 運算符和表達式
關系運算(比較運算)
<:小于<=:小于或等于>:大于>=:大于或等于==:等于!=:不等于關系表達式:表達式關系運算符表達式表達式結(jié)果為布爾類型:false(假)和true(真)
562.5 運算符和表達式
邏輯運算!:邏輯非&&:邏輯與||:邏輯或邏輯表達式:表達式邏輯運算符表達式
注:表達式可以使任何類型的,因為表達式都有值。0:“假”;非0:“真”。表達式結(jié)果為布爾類型:false(假)和true(真)
2.5 運算符和表達式
邏輯運算—真值表ab!a!ba&&ba||b非0非000非00000011011110001100注:短路原則582.5 運算符和表達式
位運算~:按位取反
<<:向左移位>>:向右移位&:按位與|:按位或^:按位異或操作數(shù)只能是整型或字符型數(shù)據(jù),不能浮點型數(shù)據(jù)3&14結(jié)果為000000103|14結(jié)果為000011113^14結(jié)果為0000110114結(jié)果為111100013<<5結(jié)果為01100000-7>>5課本P33注:右端對齊,非負補0,零補1;無符號則補0.~592.5 運算符和表達式
逗號運算(順序求值運算)
先左后右計算表達式的值,取表達式n的值為整個運算式的結(jié)果逗號運算符的優(yōu)先級最低注意:并不是任何地方出現(xiàn)的逗號,都是逗號運算符。很多情況下,逗號僅用作分隔符。如:printf("%d%d",a,b);表達式1,表達式2,表達式3,…,表達式na=3*5,a*4結(jié)果為60(a=3*5,a*4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買電器押金合同范例
- 2025年監(jiān)房安全門項目投資可行性研究分析報告
- 軟件技術合同范本
- 2024年多媒體講臺行業(yè)投資分析及發(fā)展戰(zhàn)略研究咨詢報告
- 2025年兒科麻醉面罩行業(yè)深度研究分析報告
- 公司會計協(xié)議合同范例
- 肖像權使用合同范本
- 廠區(qū)綠化養(yǎng)護合同范本
- 2025年安全帶項目可行性研究報告
- 2025年度財務數(shù)據(jù)傳輸保密及安全協(xié)議
- 2025年中國電信集團有限公司招聘筆試參考題庫含答案解析
- 2025年全國計算機二級等級考試全真模擬試卷及答案(共九套卷)
- 2024復工復產(chǎn)安全培訓
- 2025中國南光集團限公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 機加工行業(yè)安全生產(chǎn)風險辨識及控制清單
- 江蘇省蘇州市2024-2025學年第一學期八年級數(shù)學期末模擬卷(一)(無答案)
- 呼吸科護理組長述職報告
- 【歷史】秦漢時期:統(tǒng)一多民族國家的建立和鞏固復習課件-2024-2025學年統(tǒng)編版七年級歷史上冊
- 社區(qū)中心及衛(wèi)生院65歲及以上老年人健康體檢分析報告模板
- 化工過程安全管理導則AQT 3034-2022知識培訓
- 2024電力建設工程質(zhì)量問題通病防止手冊
評論
0/150
提交評論