c++語言程序設計(鄭莉第四版)課件2_第1頁
c++語言程序設計(鄭莉第四版)課件2_第2頁
c++語言程序設計(鄭莉第四版)課件2_第3頁
c++語言程序設計(鄭莉第四版)課件2_第4頁
c++語言程序設計(鄭莉第四版)課件2_第5頁
已閱讀5頁,還剩98頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章C++簡單程序設計清華大學鄭莉C++語言程序設計12本章主要內容C++語言概述基本數據類型和表達式數據的輸入與輸出算法的基本控制結構自定義數據類型3C++語言的產生C++是從C語言發展演變而來的,首先是一個更好的C引入了類的機制,最初的C++被稱為“帶類的C”1983年正式取名為C++從1989年開始C++語言的標準化工作于1994年制定了ANSIC++標準草案于1998年11月被國際標準化組織(ISO)批準為國際標準,成為目前的C++C++語言概述4C++的特點全面兼容C它保持了C的簡潔、高效和接近匯編語言等特點對C的類型系統進行了改革和擴充C++也支持面向過程的程序設計,不是一個純正的面向對象的語言支持面向對象的方法C++語言概述5C++程序實例—例2-1//2_1.cpp#include<iostream>usingnamespacestd;intmain(){

cout<<"Hello!"<<endl;

cout<<"Welcometoc++!"<<endl; return0;}運行結果:Hello!Welcometoc++!C++語言概述6C++字符集大小寫的英文字母:A~Z,a~z數字字符:0~9特殊字符:

! # % ^ & * _ + = - ~ < > / \ ‘

“ ; . , : ? ( ) [ ] { }C++語言概述7詞法記號關鍵字

C++預定義的單詞標識符

程序員聲明的單詞,它命名程序正文中的一些實體文字

在程序中直接使用符號表示的數據操作符

用于實現各種運算的符號分隔符

(){},:;

用于分隔各個詞法記號或程序正文空白符 空格、制表符(TAB鍵產生的字符)、垂直制表符、換行符、回車符和注釋的總稱C++語言概述8標識符的構成規則以大寫字母、小寫字母或下劃線(_)開始。可以由以大寫字母、小寫字母、下劃線(_)或數字0~9組成。大寫字母和小寫字母代表不同的標識符。C++語言概述9

數據類型

——常量與變量#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;

cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;

cout<<v<<endl;return0;}常量變量變量先聲明后使用符號常量基本數據類型和表達式10#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;

cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;

cout<<v<<endl;return0;}

數據類型

——整型數據shortunsignedshort2字節intunsignedint

4字節longunsignedlong4字節整型變量聲明基本數據類型和表達式整型變量整型常量11數據類型

—整型數據及取值范圍類型 說明符 位數 數值范圍 短整 short 16 -32768~32767基本 int 32 -231~(231-1)長整 long 32 -231~(231-1)無符號

unsignedshort 16 0~65535

unsigned[int] 32 0~(232-1)

unsignedlong 32 0~(232-1) 基本數據類型和表達式12#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;

cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;

cout<<v<<endl;return0;}

數據類型

——實型數據實型常量float4字節

3.4×10±387位有效數字double8字節

1.7×10±30815位有效數字longdouble8字節

1.7×10±30815位有效數字實型變量默認為double型后綴F(或f)

為float型后綴L(或l)

為longdouble

型基本數據類型和表達式13

數據類型

——字符型數據(一)字符常量單引號括起來的一個字符,

如:'a','D','?','$'字符變量用來存放字符常量

例:charc1,c2;

c1='a';

c2='A';字符數據在內存中的存儲形式以ASCII碼存儲,占1字節,用7個二進制位基本數據類型和表達式14字符數據的使用方法字符數據和整型數據之間可以運算。字符數據與整型數據可以互相賦值。字符串常量例:"CHINA"

"a"

'a'所以:charc;

c="a";CHINA\0a

\0aPage14

數據類型

——字符型數據(二)基本數據類型和表達式15

數據類型

——布爾型數據布爾型變量的說明:

例:boolflag;布爾型數據的取值:

只有false

和true

兩個值基本數據類型和表達式16

數據類型

——變量初始化例:

inta=3;

doublef=3.56;

charc='a';

intc(5);Page16基本數據類型和表達式17數據類型

—混合運算時的類型轉換不同類型數據進行混合運算時,C++編譯器會自動進行類型轉換。為了避免不同的數據類型在運算中出現類型問題,應盡量使用同種類型數據。可以采用強制類型轉換:例如:

floatc;

inta,b;

c=float(a)/float(b);或c=(float)a/(float)b;

基本數據類型和表達式18變量的存儲類型auto屬于一時性存儲,其存儲空間可以被若干變量多次覆蓋使用。register存放在通用寄存器中。extern在所有函數和程序段中都可引用。static在內存中是以固定地址存放的,在整個程序運行期間都有效。基本數據類型和表達式19算術運算符與算術表達式基本算術運算符

+-*/(若整數相除,結果取整)%(取余,操作數為整數)優先級與結合性先乘除,后加減,同級自左至右++,--(自增、自減)例:i++;--j;Page19基本數據類型和表達式20賦值運算符和賦值表達式

簡單的賦值運算符"="舉例

n=n+5表達式的類型

等號左邊對象的類型表達式的值

等號左邊對象被賦值后的值Page20基本數據類型和表達式21賦值運算符和賦值表達式

復合的賦值運算符有10種復合運算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=例

a+=3

等價于a=a+3

x*=y+8

等價于x=x*(y+8)基本數據類型和表達式22賦值運算符和賦值表達式

——賦值表達式舉例a=5 表達式值為5a=b=c=5 表達式值為5,a,b,c均為5a=5+(c=6) 表達式值為11,a為11,c為6a=(b=4)+(c=6)

表達式值為10,a為10,b為4,c為6a=(b=10)/(c=2)

表達式值為5,a為5,b為10,c為2a+=a-=a*a 相當于a=a+(a=a-a*a)Page22基本數據類型和表達式23逗號運算和逗號表達式格式表達式1,表達式2求解順序及結果先求解1,再求解2,最終結果為表達式2的值例a=3*5,a*4

最終結果為60Page23基本數據類型和表達式24關系運算與關系表達式關系運算是比較簡單的一種邏輯運算,優先次序為:

<<=>>===!=

優先級相同(高)優先級相同(低)關系表達式是一種最簡單的邏輯表達式其結果類型為bool,值只能為true

或false。例如:a>b,c<=a+b,x+y==3基本數據類型和表達式25邏輯運算與邏輯表達式邏輯運算符

!(非)&&(與)||(或)

優先次序:高→低邏輯表達式

例如:(a>b)&&(x>y)

其結果類型為bool,值只能為true

或false基本數據類型和表達式26邏輯運算與邏輯表達式“&&”

的“短路特性”表達式1&&表達式2先求解表達式1若表達式1的值為false,則最終結果為false,不再求解表達式2若表達式1的結果為true,則求解表達式2,以表達式2的結果作為最終結果“||”也具有類似的特性基本數據類型和表達式27條件運算符與條件表達式一般形式表達式1?表達式2:表達式3表達式1必須是bool

類型執行順序先求解表達式1,若表達式1的值為true,則求解表達式2,表達式2的值為最終結果若表達式1的值為false,則求解表達式3,表達式3的值為最終結果例:x=a>b?a:b;基本數據類型和表達式28條件運算符與條件表達式注意:條件運算符優先級高于賦值運算符,低于邏輯運算符表達式2、3的類型可以不同,條件表達式的最終類型為2和3中較高的類型。例:x=a>b?a:b;基本數據類型和表達式①②29sizeof

運算符語法形式

sizeof(類型名)

或sizeof

表達式結果值:

“類型名”所指定的類型或“表達式”的結果類型所占的字節數。例:sizeof(short)sizeof

x基本數據類型和表達式30位運算——按位與(&)運算規則將兩個運算量的每一個位進行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其他位不變。例如:

將char型變量a的最低位置0:

a=a&0xfe;取指定位。

例如:有charc;inta;

取出a的低字節,置于c中:c=a&0xff;基本數據類型和表達式31位運算——按位或(|)運算規則將兩個運算量的每一個位進行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其他位不變。

例如:將int

型變量a

的低字節置

1

a=a|0xff;基本數據類型和表達式32位運算——按位異或(^)運算規則兩個操作數進行異或:

若對應位相同,則結果該位為0,

若對應位不同,則結果該位為1,舉例:計算071^052071: 00111001052:(^)00101010071^052: 00010011基本數據類型和表達式33位運算——按位異或(^)用途:使特定位翻轉(與0異或保持原值,與1異或取反)例如:要使01111010

低四位翻轉:

01111010(^) 00001111 01110101基本數據類型和表達式34位運算——取反(~)單目運算符,對一個二進制數按位取反。例:025:0000000000010101~025:1111111111101010基本數據類型和表達式35位運算——移位左移運算(<<)左移后,低位補0,高位舍棄。右移運算(>>)右移后,低位:舍棄高位:無符號數:補0

有符號數:補“符號位”基本數據類型和表達式36運算符優先級括號++,--,sizeof*,/,%+,-==,!=位運算&&||?:賦值運算逗號運算低高基本數據類型和表達式37混合運算時數據類型的轉換

——隱含轉換一些二元運算符(算術運算符、關系運算符、邏輯運算符、位運算符和賦值運算符)要求兩個操作數的類型一致。在算術運算和關系運算中如果參與運算的操作數類型不一致,編譯系統會自動對數據進行轉換(即隱含轉換),基本原則是將低類型數據轉換為高類型數據。

char,short,int,unsigned,long,unsigned

long,float,double

低高基本數據類型和表達式38混合運算時數據類型的轉換

——隱含轉換當參與運算的操作數必須是bool型時,如果操作數是其它類型,編譯系統會自動將非0數據轉換為true,0轉換為false。將低類型數據轉換為高類型數據;位運算的操作數必須是整數,當二元位運算的操作數是不同類型的整數時,也會自動進行類型轉換,賦值運算要求左值與右值的類型相同,若類型不同,編譯系統會自動將右值轉換為左值的類型。基本數據類型和表達式39混合運算時數據類型的轉換

——顯式轉換語法形式(3種):類型說明符(表達式)(類型說明符)表達式類型轉換操作符<類型說明符>(表達式)類型轉換操作符可以是:

const_cast、dynamic_cast、

reinterpret_cast、static_cast顯式類型轉換的作用是將表達式的結果類型轉換為類型說明符所指定的類型。例:int(z),(int)z,static_cast<int>(z)

三種完全等價基本數據類型和表達式40語句空語句聲明語句表達式語句選擇語句循環語句跳轉語句復合語句標號語句

41表達式語句格式:表達式;表達式語句與表達式的區別:表達式可以包含在其他表達式中,而語句不可。例如:if((a=b)>0)t=a;不可寫為:if((a=b;)>0)t=a;語句42復合語句將多個語句用一對大括號包圍,便構成一個復合語句例如{ sum=sum+i; i++;} 語句43簡單的輸入、輸出向標準輸出設備(顯示器)輸出例:intx;

cout<<"x="<<x;從標準輸入設備(鍵盤)輸入例:intx;

cin>>x;44順序結構分支結構循環結構算法的基本控制結構45如何解決分支問題?例2-2輸入一個年份,判斷是否閏年。算法的基本控制結構#include<iostream>usingnamespacestd;intmain()

{ intyear;boolIsLeapYear;cout

<<

"Entertheyear:";cin

>>

year; IsLeapYear=((year%4==0&&

year%100!=0)

||

(year%400==0));

if(IsLeapYear)

cout

<<

year

<<

"isaleapyear“

<<

endl;

else

cout

<<

year

<<

"isnotaleapyear“

<<endl; return0;}4646運行結果:Entertheyear:20002000isaleapyear474748if(表達式)語句例:if(x>y)cout<<x;if(表達式)語句1else語句2例:if(x>y)cout<<x;elsecout<<y;if(表達式1)語句1

elseif(表達式2)語句2

elseif(表達式3)語句3

else語句nif語句

——三種形式算法的基本控制結構49如何解決多分問題?例2-3輸入兩個整數,比較兩個數的大小。算法的基本控制結構#include<iostream>usingnamespacestd;intmain(){

intx,y;

cout<<"Enterxandy:";

cin>>x>>y; if(x!=y) if(x>y)

cout<<"x>y"<<endl; else

cout<<"x<y"<<endl; else

cout<<"x=y"<<endl; return0;}5050運行結果1:Enterxandy:58x<y運行結果2:Enterxandy:88x=y運行結果3:Enterxandy:128x>y515152一般形式if()if()語句1else語句2elseif()語句3else語句4注意語句1、2、3、4可以是復合語句,每層的if與else配對,或用{}來確定層次關系。if語句

——嵌套算法的基本控制結構53特殊的多分支結構例2-4輸入一個0~6的整數,轉換成星期輸出。算法的基本控制結構#include<iostream>usingnamespacestd;intmain()

{

intday; cin>>day; switch(day)

{

case0:

cout

<<

"Sunday"

<<

endl;

break;

case1:

cout

<<

"Monday"

<<

endl;

break;

case2:

cout

<<

"Tuesday"

<<

endl;

break;

case3:cout

<<

"Wednesday"

<<

endl;

break;

case4:

cout

<<

"Thursday"

<<

endl;

break;

case5:

cout

<<

"Friday"

<<

endl;

break;

case6:

cout

<<

"Saturday"

<<

endl;

break;

default:

cout

<<

"DayoutofrangeSunday..Saturday"

<<

endl;

break; } return0;}545455一般形式switch(表達式){case常量表達式1:語句1case常量表達式2:語句2┆case常量表達式n:語句ndefault:語句n+1}switch語句執行順序以case中的常量表達式值為入口標號,由此開始順序執行。因此,每個case分支最后應該加break語句。每個常量表達式的值不能相同,次序不影響執行結果。可以是多個語句,但不必用{}。可以是整型、字符型、枚舉型算法的基本控制結構56使用switch語句應注意的問題case分支可包含多個語句,且不用{}。表達式、判斷值都是int型或char型。若干分支執行內容相同可共用一組語句。算法的基本控制結構57如何有效地完成重復工作例2-5求自然數1~10之和分析:本題需要用累加算法,累加過程是一個循環過程,可以用while語句實現。算法的基本控制結構#include<iostream>usingnamespacestd;intmain(){

inti=1,sum=0;

while(i<=10){sum+=i;//相當于sum=sum+i;i++;

}

cout<<"sum="<<sum<<endl; return0;}運行結果:sum=55585859while語句形式while(表達式)語句

可以是復合語句,其中必須含有改變條件表達式值的語句。執行順序先判斷表達式的值,若為true時,執行語句。算法的基本控制結構60先執行循環體,后判斷條件的情況例2-6

輸入一個整數,將各位數字反轉后輸出。算法的基本控制結構#include<iostream>usingnamespacestd;intmain()

{ intn,right_digit,newnum=0; cout<<"Enterthenumber:"; cin>>n;

cout<<"Thenumberinreverseorderis";

do

{ right_digit=n%10; cout<<right_digit; n/=10;

//相當于n=n/10

}while(n!=0);

cout<<endl; return0;}6161運行結果:Enterthenumber:365Thenumberinreverseorderis563626263do-while語句一般形式do語句while(表達式)可以是復合語句,其中必須含有改變條件表達式值的語句。執行順序先執行循環體語句,后判斷條件。

表達式為true時,繼續執行循環體與while語句的比較:while語句執行順序

先判斷表達式的值,為true時,再執行語句算法的基本控制結構對比下列程序:程序1:#include<iostream>usingnamespacestd;intmain(){

inti=1,sum=0;while(i<=10){sum+=i;i++;}

cout<<"sum="<<sum<<endl;return0;}算法的基本控制結構程序2:#include<iostream>usingnamespacestd;intmain(){

inti=1,sum=0;do{sum+=i;i++;}while(i<=10);

cout<<"sum="<<sum<<endl;return0;}646465for語句

既可以用于循環次數已知,也可用于次數未知語法形式for(初始語句;表達式1;表達式2)語句

循環前先求解為true時執行循環體循環控制條件每次執行完循環體后求解算法的基本控制結構66例2-8輸入一個整數,求出它的所有因子。算法的基本控制結構#include<iostream>usingnamespacestd;intmain()

{ intn; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<"Factors"; for(int

k

=

1;k<=n;k++)

if(n%k==0)

cout<<k<<"";cout<<endl;return0;}6767運行結果1:Enterapositiveinteger:36Number36Factors123469121836運行結果2:Enterapositiveinteger:7Number7Factors17686869例2-9編寫程序輸出以下圖案*************************算法的基本控制結構#include<iostream>usingnamespacestd;intmain(){ constintN=4; for(inti=1;i<=N;i++){//輸出前4行圖案

for(intj=1;j<=30;j++)

cout<<''; //在圖案左側空30列

for(intj=1;j<=8-2*i;j++)

cout<<''; for(intj=1;j<=2*i-1;j++)

cout<<'*';

cout<<endl; }7070

//輸出后3行圖案

for(inti=1;i<=N-1;i++){ for(intj=1;j<=30;j++)

cout<<''; //在圖案左側空30列

for(intj=1;j<=7-2*i;j++)

cout<<'*';

cout<<endl; } return0;}717172循環結構與選擇結構相互嵌套#include<iostream>usingnamespacestd;intmain(){ for(intn=100;n<=200;n++){if(n%3!=0)

cout<<n; }return0;}算法的基本控制結構73例2-10讀入一系列整數,統計出正整數個數i和負整數個數j,讀入0則結束。分析:需要讀入一系列整數,但是整數個數不定,要在每次讀入之后進行判斷,因此使用while循環最為合適。循環控制條件應該是n!=0。由于要判斷數的正負并分別進行統計,所以需要在循環內部嵌入選擇結構。算法的基本控制結構#include<iostream>usingnamespacestd;intmain(){

inti=0,j=0,n;

cout<<"Entersomeintegersplease(enter0toquit):" <<endl;

cin>>n; while(n!=0){ if(n>0)i+=1; if(n<0)j+=1;

cin>>n; }

cout<<"Countofpositiveintegers:"<<i<<endl;

cout<<"Countofnegativeintegers:"<<j<<endl; return0;}747475break和continue語句break語句使程序從循環體和switch語句內跳出,繼續執行邏輯上的下一條語句。不宜用在別處。continue語句結束本次循環,接著判斷是否執行下一次循環。算法的基本控制結構76typedef語句為一個已有的數據類型另外命名語法形式typedef

已有類型名新類型名表;例如typedefdoubleArea,Volume;typedef

int

Natural;Naturali1,i2;Areaa;Volumev;自定義數據類型77枚舉類型—enum只要將需要的變量值一一列舉出來,便構成了一個枚舉類型。枚舉類型的聲明形式如下:enum

枚舉類型名{變量值列表};例如:enumWeekday{SUN,MON,TUE,WED,THU,FRI,SAT};自定義數據類型78枚舉類型—enum枚舉類型應用說明:對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:SUN=0;枚舉元素具有默認值,它們依次為:0,1,2,。也可以在聲明時另行指定枚舉元素的值,如:enum

Weekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};枚舉值可以進行關系運算。整數值不能直接賦給枚舉變量,如需

要將整數賦值給枚舉變量,應進行強

制類型轉換。自定義數據類型79例2-11設某次體育比賽的結果有四種可能:勝(WIN)、負(LOSE)、平局(TIE)、比賽取消(CANCEL),編寫程序順序輸出這四種情況。分析:由于比賽結果只有四種可能,所以可以聲明一個枚舉類型,聲明一個枚舉類型的變量來存放比賽結果。自定義數據類型#include<iostream>usingnamespacestd;enum

GameResult{WIN,LOSE,TIE,CANCEL};intmain(){

GameResultresult;

enum

GameResultomit=CANCEL;//可不用關鍵字enmum for(intcount=WIN;count<=CANCEL;count++){ result=GameResult(count); if(result==omit)

cout<<"Thegamewascancelled"<<endl; else{

cout<<"Thegamewasplayed"; if(result==WIN)

cout<<"andwewon!"; if(result==LOSE)

cout<<"andwelost.";

cout<<endl; } } return0;}8080運行結果

Thegamewasplayedandwewon!Thegamewasplayedandwelost.ThegamewasplayedThegamewascancelled818182結構體——結構的聲明結構的概念結構是由不同數據類型的數據組成的集合體。聲明結構類型

struct

結構名

{

數據類型成員名1;數據類型成員名2; ┆數據類型成員名n;

};自定義數據類型83結構體——結構的聲明舉例:structStudent{//學生信息結構體

intnum;//學號

charname[20];//姓名

chargender;//性別

intage;//年齡

floatscore;//成績

charaddr[40];//住址};自定義數據類型84結構體——結構變量說明變量說明形式結構名結構變量名;注意:結構變量的存儲類型概念、它的壽命、可見性及使用范圍與普通變量完全一致。結構變量說明在結構類型聲明之后,二者也可同時進行。結構變量占內存大小可用sizeof

運算求出:

sizeof(類型名或變量名)自定義數據類型85結構體

——結構變量的初始化和使用初始化說明結構變量的同時可以直接設置初值。使用結構體成員的引用形式:

結構變量名.成員名自定義數據類型86例2-12結構體變量的初始化和使用#include<iostream>#include<iomanip>#include<string>usingnamespacestd;structStudent{//學生信息結構體

intnum;//學號

charname[20];//姓名

chargender;//性別

intage;//年齡}stu={97001,"LinLin",'F',19};intmain(){

cout<<setw(7)<<stu.num<<setw(20)<<

<<setw(3)<<stu.sex<<setw(3)<<stu.age;return0;}//setw()用來設置輸出間隔的自定義數據類型運行結果:97001LinLinF1987聯合體聲明形式:union聯合名{

數據類型成員名1;數據類型成員名2;:數據類型成員名n;};聯合體類型變量說明的語法形式聯合名聯合變量名;引用形式:聯合名.成員名自定義數據類型88例:unionUArea{charcData;shortsData;longlData;}UAreacDatalDatasData聯合體

共用一組內存單元自定義數據類型89無名聯合無名聯合沒有標記名,只是聲明一個成員項的集合,這些成員項具有相同的內存地址,可以由成員項的名字直接訪問。例:union{

inti;floatf;}在程序中可以這樣使用:i=10;f=2.2;自定義數據類型變量是如何工作的?站在目標代碼的角度上看問題變量具有兩個重要屬性——數據類型和變量名它們都用文字表示,便于人們理解,但不便于CPU識別,因此它們不能出現在目標代碼中;下面將討論它們在目標代碼中的表示方式。90深度探索變量是如何工作的?變量名源代碼中,變量依靠變量名來標識;目標代碼中,變量依靠地址來標識,每個變量的地址互不相同。91深度探索inta,b;intmain(){a++;b++;return0;}incl0x80495f8incl0x80495fc地址變量是如何工作的?數據類型任何數據在內存中都是用二進制串的形式表示的;一串二進制數,只有確定了類型,才有真實的含義;例:10111111,10000000,00000000,00000000解釋為int型:-1,082,130,432解釋為unsigned型:3,212,836,864解釋為float型:-1.092深度探索變量是如何工作的?目標代碼體現數據類型的方式類型的特性蘊含于操作之中;對不同數據類型,源代碼中形式上相同的操作,會被轉化為目標代碼中的不同操作。93深度探索93inta;shortb;charc;

intmain(){a++;b++;c++;return0;}incl0x80495f8incw0x80495fcincb0x80495fe不同的操作變量是如何工作的?變量的聲明將一個標識符聲明為變量,告訴編譯器這個標識符表示變量,同時還指出了它的數據類型;只有確定了一個變量的數據類型,變量參與的操作才具有完整的意義,編譯器才能將該變量參與的表達式翻譯為合適的操作。變量的定義不僅確定了一個標識符表示變量,以及該變量的類型,還確定了變量地址的分配位置。94深度探索表達式的執行原理什么是寄存器?CPU內部的存儲單元讀寫速度非常快數量很少IA-32有eax、ebx、ecx、edx、esp、ebp、esi、edi八個通用寄存器大部分CPU指令都需要讀寫寄存器。復雜的表達式,分步執行,每條指令只能做一次基本運算,中間結果暫存在寄存器中。95深度探索表達式的執行原理inta,b,c,d;inte;intmain(){ a=4; b=2; c=1; d=10; e=(a+b)*(c-d); return0;}movl$0x4,0x80495d8movl$0x2,0x80495dcmovl$0x1,0x80495e0movl$0xa,0x80495e496深

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論