版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼結(jié)構(gòu)工程承包合同
- 智能交通信號系統(tǒng)開發(fā)合同
- 商標(biāo)買賣代理合同
- 陶瓷制品設(shè)計制作合同
- 2024年智能安防系統(tǒng)項目投資合同
- 2024年特色民宿單間轉(zhuǎn)租經(jīng)營合同3篇
- 2024年度自建房建筑垃圾處理服務(wù)合同2篇
- 2024年版劇場演出空間租賃合同樣本3篇
- 2024年度建筑設(shè)計與裝修施工合同2篇
- 二零二四年專用車輛承運(yùn)商運(yùn)輸合同范本3篇
- 經(jīng)典繪本推薦--《果果的花朵》
- 劍橋英語 中級班 聽力腳本劍橋二
- 蛋白質(zhì)分選與膜泡運(yùn)輸
- 彈簧設(shè)計公差標(biāo)準(zhǔn)
- X62W萬能銑床電氣控制
- 常用普通螺紋加工的中徑和頂徑極限偏差快速查詢表
- 質(zhì)量認(rèn)證基礎(chǔ)知識(共218頁).ppt
- 《光學(xué)教程》[姚啟鈞]課后習(xí)題解答
- 供應(yīng)室不良事件
- ACOG指南:妊娠期高血壓疾病指南(專家解讀)
- 服務(wù)外包公司評價表(共1頁)
評論
0/150
提交評論