C02-數(shù)據(jù)類型運(yùn)算符表達(dá)式.ppt
《C02-數(shù)據(jù)類型運(yùn)算符表達(dá)式.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C02-數(shù)據(jù)類型運(yùn)算符表達(dá)式.ppt(40頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,,2,內(nèi)容提要,數(shù)據(jù)類型常量與變量整型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)字符型數(shù)據(jù)各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算算術(shù)運(yùn)算符與算術(shù)表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式,3,數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作,2.1C的數(shù)據(jù)類型,C數(shù)據(jù)類型,,基本類型,構(gòu)造類型,指針類型,空類型void,自定義類型typedef,字符類型char,枚舉類型enum,整型,浮點(diǎn)型,,,數(shù)組,結(jié)構(gòu)體struct,共用體union,,,signedunsigned,4,標(biāo)識(shí)符:用來標(biāo)識(shí)變量、常量、函數(shù)、數(shù)組、文件等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)符號(hào)必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長(zhǎng)度:最長(zhǎng)32個(gè)字符命名原則:見名知意不宜混淆如l與I,o與0,例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123,2.2常量與變量,5,常量:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))常數(shù):直接使用符號(hào)常量:用標(biāo)識(shí)符代表常量,定義格式有兩種:Const=#define一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實(shí)型常量字符常量字符串常量,例符號(hào)常量舉例#definePRICE30#defineS1"total="main(){inttotal;total=10*PRICE;printf("%s%d",S1,total);getch();},1.常量,例符號(hào)常量舉例main(){constfloatPI=3.1416;constcharSTR[]="Hello,world";printf("%f\n",PI);printf("%s\n",STR);getch();},6,其值可以改變的量:變量名與變量值變量的使用:先定義,后使用變量定義一般放在函數(shù)開頭,格式:數(shù)據(jù)類型變量1[,變量2,…,變量n];,變量初始化:定義時(shí)賦初值,例:inta,b,c;floatdata;,決定分配字節(jié)數(shù)和數(shù)的表示范圍,合法標(biāo)識(shí)符,例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;;,2.變量,7,常量和變量的例,/*exp2-1constant},輸出:a=20b=25area=78.540001,8,2.3整型數(shù)據(jù),2.3.1整型常量從表示整數(shù)的大小可分為:整型、長(zhǎng)整型、無符號(hào)整型,在整常量后加字母l或L,表示longint型常量,如:35L在整常量后加字母u或U,表示無符號(hào)int型常量,如:123u在整常量后加字母ul或UL,表示無符號(hào)longint型常量,如123456UL,9,整型常量,十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.開頭數(shù)字不是0如123,-456,0八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,-011十六進(jìn)制整數(shù):由0 x開頭,后跟0~9,a~f,A~F表示.如0 x123,0Xff,例30000為int型65536為longint型,整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型,從表示整數(shù)的進(jìn)制可分為:十進(jìn)制、八進(jìn)制和16進(jìn)制整數(shù),10,2.3.2整型變量,和整型常量類似:占用字節(jié)數(shù),取值范圍同常量,11,main(){inta=255;longb=0 xffff,c;unsignedd=200;c=b+1;printf("a(10)=%d,a(8)=%o,a(16)=%x\n",a,a,a);printf("b=%ld\n",b);printf("c=%ld\n",c);printf("d=%u\n",d);printf("a+c=%ld,a+c=%d\n",a+c,a+c);getch();},整型變量使用的例,12,小數(shù)形式:必須有小數(shù)點(diǎn)如:0.123,.123,123.0,0.0,123.指數(shù)形式:e或E之前必須有數(shù)字;指數(shù)必須為整數(shù)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,實(shí)型常量的類型:默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為是float型,2.4浮點(diǎn)型數(shù)據(jù),2.4.1實(shí)型常量,13,2.4.2實(shí)型變量,格式控制符:小數(shù)形式為%f,指數(shù)形式為%e,14,實(shí)型變量例,輸出結(jié)果:x=123456792.000000,x=1.23457e+08y=123456000.000000,y=1.23456e+08x+y=246912792.00,main(){floatx=123456789;doubley=123.456e+6;printf("x=%f,x=%e\n",x,x);printf("y=%f,y=%e\n",y,y);printf("x+y=%12.2f\n",x+y);getch();},15,2.5.1字符常量用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符.如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值字符常量的值:ASCII碼值;如‘A’——65,‘a(chǎn)’——97,例如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’?’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(?),2.5字符型數(shù)據(jù),16,轉(zhuǎn)義字符舉例,main(){printf("Y\b=\n");printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\C\");},轉(zhuǎn)義字符有三類:無法顯示的控制字符容易混淆的符號(hào)其他可以直接表示的字符,17,2.5.2字符型變量,main(){charc1,c2,c3;c1=a;c2=\101;c3=\";printf("c1=%c\n",c1);printf("c2=%c\n",c2);printf("c3=%c\n",c3);printf("c1-c2=%d\n",c1-c2);printf("%c-32=%c\n",c1,c1-32);getch();},輸出結(jié)果:c1=ac2=Ac3="c1-c2=32a-32=A,18,字符型與整型,字符的存儲(chǔ):ASCII碼—與整數(shù)相似字符形式輸出:ASCII碼—ASCII字符整數(shù)形式輸出:ASCII碼作為整數(shù)輸出可以相互賦值可以參加運(yùn)算,例:main(){intc1=a;charc2=87;printf("c1=%d\n",c1);printf("c2+10=%c\n",c2+10);getch();},輸出:c1=97C2+10=a,19,字符常量與字符串常量不同,用雙引號(hào)(“”)括起來的字符序列存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志,例:charch;ch=“A”;,2.5.3字符串常量,20,整型變量:占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字short≤int≤long可用sizeof(類型標(biāo)識(shí)符)測(cè)量實(shí)型變量:float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量:存放字符的ASCII碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算沒有字符串變量,用字符數(shù)組存放,例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/,例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/,各種類型的變量,main(){charstr[20]={"Thisisaexample!"};printf("%s\n",str);getch();},21,例#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;printf(“total=%f,ch1=%c\n”,total,ch1);},例子,22,整型,字符型,實(shí)型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,基本數(shù)據(jù)類型,23,2.6運(yùn)算符與表達(dá)式,基本運(yùn)算符及其表達(dá)式混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換,24,2.6.1基本運(yùn)算符及其表達(dá)式,C語言運(yùn)算符概述運(yùn)算:對(duì)數(shù)據(jù)的加工,被加工的數(shù)據(jù)稱運(yùn)算量或操作數(shù)。運(yùn)算符:是一種向編譯程序說明一個(gè)特定的數(shù)學(xué)或邏輯運(yùn)算的符號(hào)。表達(dá)式:由運(yùn)算符和運(yùn)算量組成,用來描述運(yùn)算加工的數(shù)據(jù)、加工順序、具體操作。運(yùn)算符優(yōu)先級(jí):表達(dá)式中優(yōu)先級(jí)較高的運(yùn)算符先于優(yōu)先級(jí)較低的運(yùn)算符進(jìn)行運(yùn)算,相同時(shí)依據(jù)運(yùn)算符的結(jié)合性。運(yùn)算符結(jié)合性:有左結(jié)合性和右結(jié)合性兩種。,25,,26,1.算術(shù)運(yùn)算符及其表達(dá)式(1)基本算術(shù)運(yùn)算符+-*/%功能:加、減、乘、除、取余。目數(shù):都是雙目運(yùn)算符。優(yōu)先級(jí):先乘除后加減。結(jié)合方向:自左至右。,注意:%運(yùn)算要求運(yùn)算量必須為整型數(shù)據(jù)。/運(yùn)算若運(yùn)算量均為整型則結(jié)果也為整型(舍去小數(shù))。+、-、*、/運(yùn)算時(shí),運(yùn)算量有實(shí)數(shù)則結(jié)果為double型。字符型數(shù)據(jù)可與數(shù)值型數(shù)據(jù)混合運(yùn)算。,例5/2=5/2.0=1%10=5%1=5.5%2,例5/2=25/2.0=2.51%10=15%1=05.5%2(?),27,(2)自加、自減運(yùn)算符++--功能:前置:++i;--i;在使用i之前i值先加/減1。后置:i++;i--;在使用i之后,i值再加/減1。目數(shù):均為單目運(yùn)算符,且要求運(yùn)算量為單個(gè)變量。優(yōu)先級(jí):高于基本算術(shù)運(yùn)算符的優(yōu)先級(jí)。結(jié)合方向:右結(jié)合性。,例a=5;b=++a;a=5;b=a++;a=5;printf(“%d”,++a);a=5;printf(“%d”,a++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;,//b=6,a=6,//b=5,a=6,//6,//5,//c=20,a=4,//c=15,a=4,(3)正負(fù)號(hào)運(yùn)算符+-功能:改變符號(hào)位。目數(shù):?jiǎn)文?。?yōu)先級(jí):與自加、自減運(yùn)算符同級(jí)。結(jié)合方向:右結(jié)合性。則:j=-i++等價(jià)于j=-(i++),28,(4).算術(shù)表達(dá)式定義:由算術(shù)運(yùn)算符和括號(hào)把運(yùn)算量連接起來的式子。表達(dá)式運(yùn)算時(shí),若一個(gè)運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同,先自動(dòng)進(jìn)行類型轉(zhuǎn)換再進(jìn)行運(yùn)算。如:inti=1;floatf=1.0;則i+f,,1.0+1.0=2.0,29,2.賦值運(yùn)算符及其表達(dá)式(1).簡(jiǎn)單賦值符及其表達(dá)式功能:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量。一般形式:變量=表達(dá)式;目數(shù):雙目。結(jié)合方向:右結(jié)合性。注意:若賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同,系統(tǒng)將自動(dòng)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,把賦值號(hào)右邊的類型轉(zhuǎn)換成左邊的類型。,例(1)x=3+5;(2)c=d+2;(3)a=(x=6)/(y=3);(4)intx;x=3.5;printf(”x=%d”,x);//輸出:x=3,(2).復(fù)合賦值符及其表達(dá)式分類:復(fù)合算術(shù)賦值符和復(fù)合位運(yùn)算賦值符。一般形式:;注意:復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上是兩個(gè)運(yùn)算符的組合。,30,例如:a+=b;相當(dāng)于a=a+b;a*=b;相當(dāng)于a=a*b;a*=b+c;相當(dāng)于a=a*(b+c);而不是a=a*b+c;,練習(xí):設(shè)inta=2;(1)計(jì)算表達(dá)式a+=a-=a*2的值(2)計(jì)算表達(dá)式a+=a-=a*=3的值,-4,0,31,練習(xí):計(jì)算下列各個(gè)表達(dá)式的值(1)x=y=z=3;(2)y=(x=8)+10;(3)x=(n=2)*(m=3);(4)a=(b=10)/(c=2);,注意:賦值運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。賦值表達(dá)式具有右結(jié)合性。賦值表達(dá)式中的表達(dá)式可以是一個(gè)賦值表達(dá)式。賦值表達(dá)式左側(cè)必須是變量,而不能為常量或表達(dá)式;,3,18,6,5,32,3.關(guān)系運(yùn)算符及其表達(dá)式關(guān)系運(yùn)算符:>===!=目數(shù):雙目。結(jié)合方向:左結(jié)合性。優(yōu)先級(jí):低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符;且、>=相同并高于==、!=;==、!=相同。關(guān)系表達(dá)式:一般形式:;表達(dá)式的值:是邏輯值“真”和“假”,TC中1表示“真”,0表示“假”,注意:應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷,因?yàn)閷?shí)數(shù)以近似值表示,存在存儲(chǔ)誤差,可采用fabs(表達(dá)式)y;1(2)x==z;0(3)y+zy)==z;1(6)m=x>y>z;0(7)n=x+(y2>7>8的值為?,例如:(1)表達(dá)式:1.0/3.0*3.0==1.0可改寫為:fabs(1.0/3.0*3.0-1.0)3x成立,表達(dá)式值為‘a(chǎn)’。x>y?1:1.5;//x>y時(shí)值為1.0,xb?a:b;求解m的值?思考:(1)對(duì)于任意的a,b,m的值具有什么意義?(2)怎樣用m表示a,b的最小值?,36,6.逗號(hào)運(yùn)算符和sizeof運(yùn)算符(1).逗號(hào)運(yùn)算符功能:將若干表達(dá)式組合成一個(gè)表達(dá)式。一般形式:表達(dá)式1,表達(dá)式2,…,表達(dá)式n;求解過程:先求表達(dá)式1,再求表達(dá)式2,依此類推,最后求出表達(dá)式n的值。表達(dá)式的值:等于表達(dá)式n的值。結(jié)合方向:左結(jié)合性。優(yōu)先級(jí):低于賦值運(yùn)算符。注意:在C語言中常用逗號(hào)作分割符。如:inta=1,b,c;c=(a=3,b=4),a*b;printf(“%d,%d”,c,(a+b,a/b));會(huì)輸出4,0。但printf(“%d,%d”,(c,(a+b,a/b)));輸出結(jié)果是?。,37,(2).sizeof運(yùn)算符功能:用于測(cè)試數(shù)據(jù)類型所占的字節(jié)數(shù)。一般形式:sizeof(變量名);或sizeof(類型名);或sizeof(表達(dá)式);目數(shù):?jiǎn)文?。結(jié)合方向:右結(jié)合性。注意:它返回變量或類型標(biāo)識(shí)符所代表的存儲(chǔ)空間的長(zhǎng)度。當(dāng)參數(shù)為表達(dá)式時(shí),不對(duì)表達(dá)式求值,而只判斷表達(dá)式值的類型,并返回該類型占用的存儲(chǔ)空間大小。,例:inta=3;printf(“%d,%d,%d,%d”,sizeof(a),sizeof(int),sizeof(a=a+4),a);結(jié)果:,38,2.6.2混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換,1.類型隱式轉(zhuǎn)換不同數(shù)據(jù)類型的運(yùn)算量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成,遵循以下規(guī)則:若參與運(yùn)算的運(yùn)算量類型不同,則先轉(zhuǎn)換成同一類型再進(jìn)行運(yùn)算。轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。所有浮點(diǎn)運(yùn)算都以雙精度進(jìn)行,即float自動(dòng)轉(zhuǎn)換為double。char型和short型數(shù)據(jù)參與運(yùn)算時(shí),必須先轉(zhuǎn)化為int型。賦值運(yùn)算中,賦值號(hào)兩邊的運(yùn)算量類型不同時(shí),右側(cè)的運(yùn)算量的類型將轉(zhuǎn)換為左側(cè)運(yùn)算量的類型。,39,數(shù)據(jù)類型隱式轉(zhuǎn)化規(guī)則示意圖,,例如:inti;floatf;doubled;longk;求:10+‘a(chǎn)’+i*f-d/k,10+‘a(chǎn)’+i*f-d/k,40,2.類型顯式轉(zhuǎn)換功能:將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需類型。一般形式:(類型說明符)(表達(dá)式);例如:(float)(a+b)是顯式的把a(bǔ)+b的值轉(zhuǎn)換為float類型。注意:類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào))。顯式轉(zhuǎn)換和隱式轉(zhuǎn)換所得到的值是一個(gè)中間變量,并不會(huì)改變?cè)兞康念愋?。較高類型向較低類型轉(zhuǎn)換時(shí)可能會(huì)發(fā)生精度損失問題。,如:floatf=6.25;printf(“f1=%d,f2=%f\n”,(int)f,f);結(jié)果為:f1=6,f2=6.250000,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- C02 數(shù)據(jù)類型 運(yùn)算 表達(dá)式
鏈接地址:http://kudomayuko.com/p-11494340.html