版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1第2章
數據類型、運算符與表達式22.1 C++的字符集和關鍵字
語文作文不能出現英語!32.1 C++的字符集和關鍵字
字符集由52個字母、10個數字、30個特殊字符組成所有C++程序(忽略換行符、制表符、注釋和字符串常量中的內容)都由字符集中的字符按一定規(guī)則構成42.1 C++的字符集和關鍵字
C++標識符是滿足如下條件的一串字符由一個字母(a~z,A~Z)或下劃線(_)開頭其它部分可以由字母、下劃線或數字(0~9)組成;大小有別只有前32個字符有效C++的63個關鍵字也是標識符,稱為保留字,不能作其它用。另外,C++還使用了一些標識符作預處理命令、庫函數的名字,稱為預定義標識符,可以被重定義,但不提倡。5標識符——課堂練習挑出一個不正確的標識符
ABCabca_bcab.c選擇一個正確的標識符
%xa+ba123test!挑出錯誤的標識符room3-1
_SUM
student
num1
Mr.Zhu
_1_2_3
MyName
myname
my_name
2men6問題:以什么數據形式表示算法中涉及的數據(實體、對象)?學生人數商品個數商品價格學生姓名邊長值角度值分數商品名稱正弦值字符類型整型實型數值類型72.2 數據類型
82.2 基本數據類型
每個C++程序中的數據對象(如2、x1、x1+2)都有確定的唯一的數據類型C++的數據類型包括基本數據類型和復合數據類型基本數據類型有整型、浮點型、字符型、布爾型不同數據類型有自己的取值范圍和所允許的操作(運算)C++沒有統(tǒng)一規(guī)定各類型數據的數據范圍、精度及在內存中所占字節(jié)數,由編譯系統(tǒng)做出安排92.2 基本數據類型—整型
整型(可進行算術、關系、邏輯等運算)signedshortint(簡寫為short)signedint(簡寫為int)signedlongint(簡寫為long)unsignedshortint(簡寫為
unsignedshort)unsignedint(簡寫為unsigned)unsignedlongint(簡寫為
unsignedlong)注意:各類型所占字節(jié)數和具體計算機有關類型符號關鍵字數的表示范圍所占字節(jié)數整型字符型實型有無[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 基本數據類型—浮點型
浮點型(實型)float(浮點型)double(雙精度型)longdouble(長雙精度型)均有符號注意:各類型所占字節(jié)數和具體計算機有關類型符號關鍵字數的表示范圍所占字節(jié)數整型字符型實型有無[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實型數據的舍入誤差由于實型數據表示的有效數字有限,將有效位以外的數字舍去造成誤差舉例floata=123456.789e5,b;b=a+20;/*b=12345678920?*/printf("a=%f\nb=%f\n",a,b);a=12345678848.000000b=12345678868.000000142.2 基本數據類型—字符型
字符型[signed]charunsignedchar實質是占一個字節(jié)的整型數ASCII表:為每個合法的字符定義一個整數允許的操作:和整型相同注意:各類型所占字節(jié)數和具體計算機有關類型符號關鍵字數的表示范圍所占字節(jié)數整型字符型實型有無[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 基本數據類型—布爾型
布爾型bool值為true和false可以當作整數用(true一般為1,false為0)把其它類型的值轉換為布爾值時,非零值轉換為true,零值轉換為false注意:各類型所占字節(jié)數和具體計算機有關類型符號關鍵字數的表示范圍所占字節(jié)數整型字符型實型有無[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整型常量表示形式十進制整數:由數字0~9組成,除0外不能以0開始八進制整數:以數字0為前綴,由數字0~7組成十六進制整數:以0X或0x為前綴,由數字0~9、A~F(或a~f)組成可以加整型后綴,無后綴時作為int類型數據12,30√0450123,040√0390x12A,0X96
√123L,421L,0L22指數形式:由整數(或小數)、e(或E)、可選的正負號、整數順序組成表示形式十進制小數:由0~9和小數點(必須)組成,整數和小數部分都可省略,但不能同時省略舉例:123.4e-5表示123.4×10-5錯例:,e1、12e、1.2e3.4、.e5、e實型常量(浮點常量)0.123,.123123.345e213.2E+2.5e-2注意:e或E前面必須有數字,后面必須是整數(可以帶+、-)一個實數可以有多種指數表示形式舉例:1234.可表示成:1234e0
123.4E1
12.34
e2.1234E41.234E3可以加浮點后綴,無后綴時作為double類型數據23用一對單引號括起來的一個普通字符(不包括‘和\)或轉義字符(也稱轉義序列)字符型常量'a','?','3','#'√'abc','','\','啊'轉義字符是用一個轉義標識\(反斜線)開頭的字符序列。如:\n,\xab轉義字符主要表示難以用一般字符表示的單個字節(jié)24轉義字符注意:1)轉義字符常量只代表一個字符(占一個字節(jié))。2)反斜杠后的八進制數可以不用0開頭3)反斜杠后的十六進制數只能以小寫字母x開頭,不允許用大寫字母X或0x開頭\n-換行符例:\101-'A'
\134-'\'
25轉義字符的使用示例#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)字符常量在內存中的存放形式作為char類型數據,實質上是一個字節(jié)長度的整型數據,數值是其ASCII碼27長度為0的字符串(即一個字符都沒有的字符串)稱為空串,表示為""(一對緊連的雙引號)。字符串常量用一對雙引號括起來的字符序列。字符串中字符的個數稱為字符串長度。"a","3.14",""
"Howareyou\n"例如,"Howdoyoudo!"、"Goodmorning!",都是字符串常量,其長度分別為14和13(空格也是一個字符)。28在內存中字符串中的每個字符以其ASCII值的二進制形式按順序存放。系統(tǒng)自動在字符串的末尾加一個空字符‘\0’
(值為0,即符號常量NULL)作為字符串的結束標志。'\0'不可顯示,也不引起任何控制動作。例如字符串"china"在內存中的實際存儲如下:字符串常量的存儲形式注意:
在書寫字符串常量時,不必加結束字符'\0',否則畫蛇添足。輸出字符串時'\0'不輸出'c''h''i''n''a''\0'010000110100100001001001010011100100001000000000實際占用6字節(jié)而非5字節(jié)內存空間。29課堂練習-字符串存放'\0''a''\0'0970"""a"'a'97'a'
"a"與'a'是不同的30字符常量與字符串常量的區(qū)別定界符不同:字符常量使用單引號,而字符串常量使用雙引號;長度不同:字符常量的長度固定為1,而字符串常量的長度,可以是0,也可以是某個整數;存儲要求不同:字符常量存儲的是字符的ASCII碼值,而字符串常量,除了要存儲串中字符的ASCII碼值外,還要存儲一個結束標志'\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變量名變量值存儲單元一個變量有一個名字在內存中占據一定的存儲單元該存儲單元中存放該變量的值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 類型轉換
提升規(guī)則
如果將數值轉換成較高的類型則可以通過隱式的類型轉換,如3.14+2如果要將數值轉換成較低的類型,必須顯式地使用強制類型轉換,如(int)3.14;數據類型的表示范圍和精度:P26—表2-6372.4 類型轉換
隱式類型轉換當表達式中運算符所操作的數據的類型與實際要求不符時,要進行隱式類型轉換,使表達式中各數據的類型符合要求算術表達式中隱式類型轉換規(guī)則是:把表達式中不同類型的數據轉換成精度最高、占用內存最多的那個數據的類型。在類型不沖突的賦值表達式中,自動將賦值運算符右邊表達式的值的類型轉換成左邊變量的類型。382.4 類型轉換
強制類型轉換(又稱顯式類型轉換)形式為:(類型)表達式
或
類型(表達式)例如:(double)3/2或
double(3)/2(double)(3/2)或
double(3/2)39類型轉換示例(1)將實型數據(包括單精度、雙精度)賦給整型變量時,舍棄實數的小數部分。inti;i=3.56;/*i的值為3*/將整型數據賦給實型變量時,數值不變,但以浮點數形式存儲到變量中。floatf;doubled;f=23;/*f的值為23.00000*/d=23;/*d的值為23.00000000000*/將double型數據賦給float型變量時,截取前面7位有效數字,存儲到變量中。40類型轉換示例(2)將字符型數據賦給整型變量時,保持原值不變將int、short、long型數據賦給字符型變量時,將其低8位原封不動地送到字符型變量。001000010010000100000001inti=289;charc;c=i;ci412.5 運算符和表達式
主要分為:算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符等
根據組成表達式的運算符的不同,表達式可以分為算術表達式、關系表達式、邏輯表達式、位運算表達式、逗號表達式和賦值表達式等。
42運算符的優(yōu)先級結合性運算符的優(yōu)先級和結合性a+b*c–d/e乘除比加減優(yōu)先級高(a+b)*(c-d)/e用圓括號()改變運算符的執(zhí)行次序同一個表達式中不同運算符進行運算的先后次序表達式中運算符優(yōu)先級相同時的運算順序通常單目、三目和雙目中的賦值運算符是右結合性,其余為左結合性通常單目運算符的優(yōu)先級高于雙目和三目運算符a+b-c+和-的結合方向都是從左向右,稱為左結合性
a=b=1=的結合方向是從右向左,稱為右結合性43優(yōu)先級與結合性總結不同優(yōu)先級的運算符,運算順序按優(yōu)先級由高到低執(zhí)行同一優(yōu)先級的運算符,運算順序按結合性的規(guī)定執(zhí)行可以使用圓括號()明確運算次序,圓括號()具有最高的優(yōu)先級44順口溜醋壇酸味灌味落跳福豆醋-初等:()[]->
.
壇-單目:++--!~-負號(類型)*指針&取地址sizeof長度酸-算術:*/%+-減味-位移:<<>>灌-關系:<<=>>===等于!=不等于味-位邏:&按位與^按位異或|按位或落-邏輯:&&邏輯與||邏輯或跳-條件:三目:?:福-賦值:=+=-=*=/=%=>>=<<=&=^=|=豆-逗號:,45表達式用運算符將操作數連接起來所構成的式子。2.5*b-6/c+'z'-max(x,y)常量變量有返回值的函數調用i=(b<a*c)表達式單個的操作數也是表達式注意:各運算符所能連接的操作數的個數、位置及類型都有各自的規(guī)定。表達式都有值。462.5 運算符和表達式
一元算術運算+
正,運算結果同操作數;-負,運算結果為操作數的負數;
++自增運算符;
--自減運算符;47自增、自減運算符示例++i,--i前綴形式:運算符在變量前面,表示對變量先自增或自減,然后再參與其它運算,運算結果具有左值性質。先加(減)后用。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++、--運算符使用注意具有右結合性在有++和--的表達式中,盡量不要使用難于理解或容易出錯的表達式。不能用于常量和一般表達式inta,b,c;a=(b+c)++; /*非法!!!*/a=34++; /*非法!!!*/512.5 運算符和表達式
二元算術運算+
加法,運算結果為兩個操作數的和;-減法,運算結果為左操作數減去右操作數的差;
*乘法,運算結果為兩個操作數的乘積;
/除法,運算結果為左操作數除以右操作數的商;
%
求余,運算結果為左操作數除以右操作數的余數,只用于整型數據,其結果也是整型;522.5 運算符和表達式
二元算術運算+-*/,運算的兩個數中有一個為float型數據,則運算的結果為double型。因為在做運算時,所有的float數據都做double型數據處理。兩個整數作/運算時,其結果為整數。但如果除數或被除數中有一個為負值時,具體結果取決于C++在具體機器上的實現。一般來說,大多數實現都采取“向零取整”,即直接截去商的小數部分532.5 運算符和表達式
二元算術運算%只能用于整型數據,其運算結果也是整形數據。C++規(guī)定,如果兩個操作數都是正的,那么結果一定是正的;否則,要看C++的具體實現,C++標準對這種情況未作明確規(guī)定,如在MicrosoftC++實現中,求余運算%的結果總是與左操作數的符號一致。
注:不同類型的數據進行運算,要先轉換成同一類型。54算術運算示例注意:兩個整數作/運算,其結果為商的整數部分,商的小數部分直接截去;參與%運算的操作數必須是整數,否則出錯;其結果也是整數。7/5
結果為17%5
結果為2%運算結果的符號同左操作數。20%6結果為220%-6結果為2-20%6結果為-2-20%-6結果為-2552.5 運算符和表達式
關系運算(比較運算)
<:小于<=:小于或等于>:大于>=:大于或等于==:等于!=:不等于關系表達式:表達式關系運算符表達式表達式結果為布爾類型:false(假)和true(真)
562.5 運算符和表達式
邏輯運算?。哼壿嫹?&:邏輯與||:邏輯或邏輯表達式:表達式邏輯運算符表達式
注:表達式可以使任何類型的,因為表達式都有值。0:“假”;非0:“真”。表達式結果為布爾類型:false(假)和true(真)
2.5 運算符和表達式
邏輯運算—真值表ab!a!ba&&ba||b非0非000非00000011011110001100注:短路原則582.5 運算符和表達式
位運算~:按位取反
<<:向左移位>>:向右移位&:按位與|:按位或^:按位異或操作數只能是整型或字符型數據,不能浮點型數據3&14結果為000000103|14結果為000011113^14結果為0000110114結果為111100013<<5結果為01100000-7>>5課本P33注:右端對齊,非負補0,零補1;無符號則補0.~592.5 運算符和表達式
逗號運算(順序求值運算)
先左后右計算表達式的值,取表達式n的值為整個運算式的結果逗號運算符的優(yōu)先級最低注意:并不是任何地方出現的逗號,都是逗號運算符。很多情況下,逗號僅用作分隔符。如:printf("%d%d",a,b);表達式1,表達式2,表達式3,…,表達式na=3*5,a*4結果為60(a=3*5,a*4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)傷性骨髓炎的健康宣教
- 兒童分離性焦慮障礙的健康宣教
- 《政府的權力用》課件
- 社團之光照亮前行計劃
- 班級年度計劃書
- 學生反饋與課程調整流程計劃
- 八年級英語NewspapersSpeaking課件
- 文化建設的總結與員工參與計劃
- 項目成本控制管理計劃
- 舞臺劇社團創(chuàng)意演出構思計劃
- 大數據與人工智能智慧樹知到期末考試答案2024年
- 觸式橄欖球智慧樹知到期末考試答案2024年
- 設備管理中的主要問題和挑戰(zhàn)
- 電路分析試題及答案(大學期末考試題)
- 藝術景觀專業(yè)職業(yè)生涯發(fā)展報告
- 遼寧經濟職業(yè)技術學院單招《語文》考試復習題庫(含答案)
- 水工藝設備基礎全套課件
- HGT 2520-2023 工業(yè)亞磷酸 (正式版)
- 跨文化人工智能倫理比較
- 外委單位安全培訓
- 母嬰行業(yè)趨勢圖分析
評論
0/150
提交評論