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

下載本文檔

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

文檔簡介

思考:機(jī)器內(nèi)存存放數(shù)據(jù)如下:訪問X得到的值是多少?1000000010111001X:結(jié)論:在訪問數(shù)據(jù)前需要知道數(shù)據(jù)是如何存儲的。僅僅知道數(shù)據(jù)是如何存儲的夠不夠?思考:已知X存儲時占一個字節(jié),即X的值為10000000,那X又等于多少呢?結(jié)論:不對數(shù)據(jù)事先下一個定義就可能會產(chǎn)生歧義。

那么數(shù)據(jù)在它們在內(nèi)存里是如何存放的?計算機(jī)里的數(shù)據(jù)有哪幾種描述?以及它們可以進(jìn)行哪些運(yùn)算呢?1000000010111001X:數(shù)據(jù)類型數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù);2.數(shù)據(jù)取值范圍;3.數(shù)據(jù)可進(jìn)行的操作難點:

各種數(shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存放形式重點:

變量與常量的概念、各種表達(dá)式的運(yùn)算第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式

教學(xué)目的和基本要求:要求學(xué)生清楚數(shù)據(jù)類型與變量、常量的關(guān)系,掌握各種常量的性質(zhì)和定義,掌握表達(dá)式中各種運(yùn)算符的功能和特點,明白產(chǎn)生副作用的原因,了解數(shù)據(jù)類型的相互轉(zhuǎn)換規(guī)則。第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式

2.1C語言的數(shù)據(jù)類型、常量2.2變量2.3運(yùn)算符與表達(dá)式2.4數(shù)據(jù)類型轉(zhuǎn)換

字符型(char)整型(short,int,long,unsigned)單精度型(float)實型雙精度型(double)枚舉類型(enum)

數(shù)組類型([])構(gòu)造類型結(jié)構(gòu)體類型(struct)共用體類型(union)指針類型(*)

空類型(void)基本類型數(shù)據(jù)類型C語言中的數(shù)據(jù)類型本章中將對基本類型中的前三類進(jìn)行介紹和學(xué)習(xí)。2.1C語言的數(shù)據(jù)類型、常量2.1.1整型數(shù)據(jù)(采用定點整數(shù)的存儲格式,只能表示純整數(shù))2.1C語言的數(shù)據(jù)類型、常量整型數(shù)據(jù)可分為四種:(1)基本型:int(2)短整型:short[int](3)長整型:long[int](4)無符號型:又可細(xì)分為三種①unsigned[int]②unsignedshort③unsignedlong2.1.1整型數(shù)據(jù)關(guān)鍵字 所占位數(shù) 取值范圍

short16-32768~32767unsignedshort160~65535

int16-32768~32767unsigned160~65535

long32-2147483648~2147483647unsignedlong320~4294967295整型數(shù)據(jù)的存儲:在C語言中,整型數(shù)據(jù)有三種表示方式:(1)十進(jìn)制表示十進(jìn)制整型常量:237-56801627(2)八進(jìn)制表示(以0開頭以區(qū)別于其他表示)八進(jìn)制整型常量:015

0101

079、08001不合法的八進(jìn)制數(shù)2.1.1整型數(shù)據(jù)整型常量的表示:在程序運(yùn)行時,其值不能被改變的量叫常量,即常數(shù)。(3)十六進(jìn)制表示(以0X開頭以區(qū)別于其他表示)十六進(jìn)制整型常量:0X2A

0XA0

0XFFFF5A、0X3H2.1.1整型數(shù)據(jù)不合法的十六進(jìn)制數(shù)一般默認(rèn)為短整型,但若數(shù)據(jù)超過短整型表示范圍,將視之為長整型;另外可以在數(shù)據(jù)最后加后綴修飾符“L”(大小寫均可),說明該數(shù)據(jù)為長整型。如:25l0125l

0X125l注意:25和25l的區(qū)別前者用2字節(jié)存儲,后者則使用4個字節(jié)存儲。思考:如何區(qū)分一個整型數(shù)據(jù)是長整型還是短整型呢?2.1.1整型數(shù)據(jù)數(shù)據(jù)前加有“+、-”的為有符號數(shù),對于省略“+”的情況,系統(tǒng)默認(rèn)為有符號數(shù);另外可以在數(shù)據(jù)最后加后綴修飾符“U”(大小寫均可),說明該數(shù)據(jù)為無符號數(shù)。如:358u

0x38Au235Lu思考:如何區(qū)分一個整型數(shù)據(jù)是無符號數(shù)還是有符號數(shù)呢?2.1.1整型數(shù)據(jù)注意:358和358u的區(qū)別前者數(shù)據(jù)最高位為符號位,后者最高位為數(shù)值位。2.1.2實型數(shù)據(jù)(也稱為浮點型)2.1C語言的數(shù)據(jù)類型、常量實型數(shù)據(jù)可分為兩種:(1)單精度型:float(2)雙精度型:double關(guān)鍵字所占位數(shù) 取值范圍 精度

float32±3.4×10-38~±3.4×10387double64±1.7×10-308~±1.7×10308

15實型數(shù)據(jù)的存儲:在C語言中,實型數(shù)據(jù)有兩種表示方式:(1)十進(jìn)制小數(shù)形式十進(jìn)制實型常量:3.44..3(2)指數(shù)形式:“十進(jìn)制小數(shù)”+“e(或E)”+“十進(jìn)制整數(shù)”指數(shù)形式實型常量:12.5e-6(表示12.5×10-6)

2.1.2實型數(shù)據(jù)實型常量的表示:當(dāng)冪為正數(shù)時,正號可以省略,如:1.25E+3可寫成1.25E32.1.2實型數(shù)據(jù)注意在指數(shù)表示形式中:小數(shù)點不能單獨出現(xiàn);如:0.√.0√.e或E的兩邊必須有數(shù),且其后面必須為整數(shù);如:6E0.2e5

34553.-E32.7E以下表示的實數(shù)是不是合法的?(無小數(shù)點,無階碼標(biāo)志)(負(fù)號位置不對)(無階碼)2.1.3字符型數(shù)據(jù)2.1C語言的數(shù)據(jù)類型、常量字符型數(shù)據(jù)可分為兩種:char、unsignedchar關(guān)鍵字 所占位數(shù) 取值范圍

char8-128~127unsignedchar80~255

字符型數(shù)據(jù)的存儲:在C語言中,字符型常量有兩種表示方式:(1)用單引號括起來的一個字符如:‘A’、‘1’、‘?’字符型常量的表示:2.1.3字符型數(shù)據(jù)(2)由反斜杠(\

)引導(dǎo)的轉(zhuǎn)義字符—P15表2.3及附錄I:ASCII表

(主要用來表示那些不便于表示的控制字符)

轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n回車換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號符39\”雙引號符34\a鳴鈴7\ddd1~3位八進(jìn)制數(shù)所代表的字符\xhh1~2位十六進(jìn)制數(shù)所代表的字符2.1.3字符型數(shù)據(jù)如:\134表示反斜線\X0A表示換行字符A可以表示為‘A’、‘\x41’、‘\101’

注意:'5'和5的區(qū)別前者在內(nèi)存里存放的是字符’5’的ASCII代碼:53,后者存放的是:整數(shù)5。2.1.4字符串由多個字符構(gòu)成的字符序列,稱之為字符串。字符串的表示:

采用字符數(shù)組來表示(在第7章里介紹)。字符串常量:由一對雙引號將字符序列括起來表示。例如:"ABC","A","123lkdf"2.1C語言的數(shù)據(jù)類型、常量字符串的存儲:字符串常量在內(nèi)存中存儲時,系統(tǒng)自動在字符串的末尾加一個串結(jié)束標(biāo)志:‘\0’,因此:長度為n個字符的字符串常量,在內(nèi)存中占有n+1個字節(jié)的存儲空間。例如:'a'與"a"是C語言中兩種完全不同類型的數(shù)據(jù)。aa\0'a'與"a"在內(nèi)存的存儲形式注意:不要將字符常量和字符串常量混淆例如,字符串“ABCDEF”有6個字符,存儲于內(nèi)存中時,共占7個字節(jié),最后一個字節(jié)為"\0"2.1.3字符型數(shù)據(jù)2.1.4符號常量符號常量:

可以使用一個符號表示一個多次常用的常量C語言中使用命令#define來定義:格式:#define符號常量名標(biāo)識符常數(shù)表達(dá)式優(yōu)點:符號常量使程序易于閱讀和修改。例如,一個程序中多處用到學(xué)生人數(shù)60,當(dāng)有學(xué)生人數(shù)改變?yōu)?5,修改這個程序很困難。而使用符號常量,只要將#defineNUM60改為#defineNUM65,就可以了。#definePI3.14159無分號2.1C語言的數(shù)據(jù)類型、常量例:求一個半徑為r的球的體積和表面積的C程序#definePI3.14159/*定義PI為符號常量,值為3.1415*/voidmain(){floatv,s,r;scanf(“%f”,&r);v=4.0/3.0*PI*r*r*rs=4*PI*r*r;printf("v=%f,s=%f\n",v,s);}說明:(1)符號常量名常常用大寫字母、變量名用小寫字母。(2)符號常量不能在其作用域范圍內(nèi)重新賦值。2.2變量

2.2.1變量的定義簡單定義:在程序運(yùn)行時,其值能被改變的量叫變量變量包括:一個名字和相應(yīng)的數(shù)據(jù)類型通過名字來引用一個變量,而數(shù)據(jù)類型則決定了該變量的存儲方式和在內(nèi)存中占據(jù)存儲單元的大小

說明:變量名和變量值這兩個概念的區(qū)別定義:intx=20;C語言中使用的變量都要作類型強(qiáng)制定義,即要求“先定義,后使用”的原則。其目的:1)保證程序中變量名使用的正確性2)編譯程序為其分配相應(yīng)的儲存單元3)保證運(yùn)算的合法性定義形式:類型說明符變量名列表;2.2變量

charch/*定義ch為字符型變量*/inti,j;/*定義i,j為基本整型變量*/longk,n,m;/*定義k,n,m為長整型變量*/floatx,y,z;/*定義x,y,z單精度實型變量*/doublesum,t;/*定義sum,t雙精度實型變量*/2.2.2變量的賦初值C語言中,當(dāng)定義一個變量后,系統(tǒng)只是按定義的數(shù)據(jù)類型分配其相應(yīng)的存儲單元,并不對其單元初始化,如果在賦初值之前直接使用該變量,則是一個不定值。例如:voidmain(){intk;k++;printf(“k=%d\n”,k);}程序運(yùn)行,輸出k的值就是一個無意義的不定值,并在不同系統(tǒng)環(huán)境下運(yùn)行的結(jié)果也可能完全不同。2.2變量賦初值的一般形式為:(1)類型說明符

變量1=值1,變量2=值2,……;

(2)類型說明符

變量1,變量2,變量3;變量1=值1;變量2=值2;……例如:inta=10,b=10,c=10等價于inta,b,c;a=10;b=10;c=10;注意:(1)在說明中不允許連續(xù)賦值,但在變量定義后,可以使用連續(xù)賦值語句初始化;

2.2變量如:inta=b=c=1;是不合法的;inta,b,c;a=b=c=1;是合法的(2)C語言中變量定義后若沒有賦值,系統(tǒng)并不自動清0,如果直接使用它,其值將是一個“不確定的”.2.2變量

2.3運(yùn)算符與表達(dá)式

2.3.1C語言中的運(yùn)算符C語言中運(yùn)算符和表達(dá)式數(shù)量之多,在高級語言中是少見的正是豐富的運(yùn)算符和表達(dá)式使C語言功能十分完善。這也是C語言的主要特點之一。運(yùn)算符的種類

C語言的運(yùn)算符共有十三類見教材P182.3運(yùn)算符與表達(dá)式

學(xué)習(xí)運(yùn)算符應(yīng)注意的幾個問題(1)運(yùn)算符的功能;(2)與運(yùn)算量的關(guān)系a.求運(yùn)算量的個數(shù)b.求運(yùn)算量的類型(3)運(yùn)算符的優(yōu)先級別(4)運(yùn)算符的結(jié)合性(也稱結(jié)合方向)(5)運(yùn)算結(jié)果的類型單目運(yùn)算++,--,&,-雙目運(yùn)算+,-,*,%三目運(yùn)算?:2.3.2優(yōu)先級與結(jié)合性C語言的運(yùn)算符不僅具有不同的優(yōu)先級,而且還有一個特點,就是它的結(jié)合性。因此,在表達(dá)式中,各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算。例:a*b/c左右++,--,&右左2.3運(yùn)算符與表達(dá)式

2.3.3

算術(shù)運(yùn)算符與算術(shù)表達(dá)式(1)C語言的基本算術(shù)運(yùn)算符:

加法+減法-乘法*

除法/求余%其中:求余%運(yùn)算要求兩個運(yùn)算量均為int

當(dāng)“/”被用于整數(shù)或字符時,結(jié)果取整

例如:5/2結(jié)果=2,1/2的結(jié)果=0(2)自增,自減運(yùn)算符自增運(yùn)算符:++其功能是使變量的值自增1。自減運(yùn)算符:--其功能是使變量值自減1。2.3運(yùn)算符與表達(dá)式

++,--運(yùn)算符為單目運(yùn)算,要求運(yùn)算對象只能是變量結(jié)合方向:為由右至左。優(yōu)先級:高于雙目運(yùn)算2.3運(yùn)算符與表達(dá)式

可有以下幾種形式: ++i變量i自增1后再參與其它運(yùn)算。 i++變量i參與運(yùn)算后,i的值再自增1。--i變量i自減1后再參與其它運(yùn)算。 i--變量i參與運(yùn)算后,i的值再自減1。2.3運(yùn)算符與表達(dá)式

例2-3:main(){intx,y;x=10;y=++x;printf(“%d,%d”,x,y);}程序運(yùn)行后,輸出結(jié)是:11,11如果將程序的第2行改為:x=10;y=x++;結(jié)果如何?因此,關(guān)鍵在于區(qū)別變量是先參與運(yùn)算,還是先使用變量自增(自減)

12.3運(yùn)算符與表達(dá)式

2.3.3算術(shù)表達(dá)式定義:由算術(shù)運(yùn)算符、括弧、內(nèi)部函數(shù)及數(shù)據(jù)組成的式子需要掌握的書寫原則:(1)表達(dá)式中的所有運(yùn)算符和操作數(shù)必須并排書寫。不能出現(xiàn)上下標(biāo)(如x2,x2等)和數(shù)學(xué)中的分?jǐn)?shù)線。(2)在C表達(dá)式中不能省略乘號(如2ab、xy等)。(3)要注意各種運(yùn)算符的優(yōu)先級別,為保持運(yùn)算順序,在寫C表達(dá)式時需要適當(dāng)添加括號(),若要用到庫函數(shù),必須按庫函數(shù)要求書寫。

2.3.4關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符及優(yōu)先級別比較兩個量的運(yùn)算符稱為關(guān)系運(yùn)算符。在C語言中有以下關(guān)系運(yùn)算符:

<,<=,>,>=,==

,!=

關(guān)系運(yùn)算符的優(yōu)先級:

(1)

>、>=、<、<=優(yōu)先級相等,==、!=優(yōu)先級相等,前者高于后者。

(2)算術(shù)運(yùn)算符>

關(guān)系運(yùn)算符>

賦值運(yùn)算符

2.3運(yùn)算符與表達(dá)式

2.3.4關(guān)系運(yùn)算符與關(guān)系表達(dá)式2.3運(yùn)算符與表達(dá)式

關(guān)系表達(dá)式的一般形式為:

表達(dá)式關(guān)系運(yùn)算符表達(dá)式

關(guān)系表達(dá)式的值是:關(guān)系成立為“真”,不成立則為“假”

C語言中用“1”表示“真”“0”表示“假”例如:a+b>c-dx>3/2‘a(chǎn)’+1<c-i-5*j==k+1都是合法的關(guān)系表達(dá)式。由于表達(dá)式中也可以包含關(guān)系表達(dá)式。因此出現(xiàn)嵌套的情況,例如:當(dāng)a=5,b=4,c=3時

a<(b>c) a!=(c==b)

又如:

(a=3)>(b=5)由于3>5不成立,故其值為0。又如:當(dāng)a=5,b=4時

a+=3<b------------假(0)------------真(1)------------假(0)------------62.3運(yùn)算符與表達(dá)式

2.3.5邏輯運(yùn)算符與邏輯表達(dá)式

2.3運(yùn)算符與表達(dá)式

C語言中提供了三種邏輯運(yùn)算符!非運(yùn)算&&與運(yùn)算||或運(yùn)算運(yùn)算符&&和或運(yùn)算符||均為雙目運(yùn)算符,具有左結(jié)合性。非運(yùn)算符!為單目運(yùn)算符,具有右結(jié)合性

(1)邏輯運(yùn)算符優(yōu)先級表示如下:!>&&>||而且:&&,||低于關(guān)系運(yùn)算符!高于算術(shù)運(yùn)算符

!(非)(高)算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||賦值運(yùn)算符(低)

2.3運(yùn)算符與表達(dá)式

按照運(yùn)算符的優(yōu)先順序可以得出:

a>b&&c>d(a>b)&&(c>d)

!b==c||d<a((!b)==c)||(d<a)a+b>c&&x+y<b((a+b)>c)&&((x+y)<b)(2)邏輯運(yùn)算的值:

邏輯運(yùn)算的值也為“真”和“假”兩種,用“1”和“0”來表示。

(3)關(guān)于邏輯運(yùn)算的說明

表達(dá)式a&&b&&c

的求解過程只有a為真時,才判別b的值;只有a和b均為真時,才判別c的值。只要a為假,就不再判別b和c的值,直接求得表達(dá)式的值為假2.3運(yùn)算符與表達(dá)式

表達(dá)式a||b||c的求解過程

只要a為真,就不再判別b和c的值,直接求得表達(dá)式的值為真。只有a為假時,才判別b的值;只有a和b均為假時,才判別c的值

2.3運(yùn)算符與表達(dá)式

2.3.6賦值運(yùn)算符與賦值表達(dá)式

1.簡單賦值運(yùn)算符與表達(dá)式

其一般形式為:變量=表達(dá)式

功能:計算表達(dá)式的值再賦予左邊的變量。整個賦值表達(dá)式的值為:左邊變量的值

例如:x=a+b

w=sin(a)+sin(b)賦值運(yùn)算符的結(jié)合方向:由右至左因此a=b=c=5可理解為:a=(b=(c=5))

優(yōu)先級:低于條件運(yùn)算符?:,高于逗號運(yùn)算符

,2.3運(yùn)算符與表達(dá)式

賦值表達(dá)式定義:在賦值表達(dá)式的未尾加上分號,就構(gòu)成為賦值語句

說明:如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進(jìn)行類型轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。

具體轉(zhuǎn)換規(guī)定如下:1)實型賦予整型,舍去小數(shù)部分。2)整型賦予實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為一個字節(jié),整型為二個字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。4)整型賦予字符型,只把低八位賦予字符量。2.3運(yùn)算符與表達(dá)式

例2-4用程序驗證不同類型變量的賦值的類型轉(zhuǎn)換。voidmain(){inta,b,c=322;/*(322=101000010)floatx,y=3.14;charch1='a',ch2;a=y;x=c;b=ch1;ch2=c;printf("%d,%f,%d,%c",a,x,b,ch2);}程序運(yùn)行結(jié)果是:

2.3運(yùn)算符與表達(dá)式

a=3,x=322.000000,b=97,ch2=662.復(fù)合賦值運(yùn)算符與表達(dá)式

在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=2.3運(yùn)算符與表達(dá)式

構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:

變量雙目運(yùn)算符=表達(dá)式它等效于:

變量=變量運(yùn)算符表達(dá)式

優(yōu)先級別:僅高于逗號(,)運(yùn)算符例如:

a+=5

等價于a=a+5

x*=y+7

等價于x=x*(y+7)

r%=p

等價于r=r

溫馨提示

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

評論

0/150

提交評論