第3章-數(shù)據(jù)類型及其應(yīng)用_第1頁
第3章-數(shù)據(jù)類型及其應(yīng)用_第2頁
第3章-數(shù)據(jù)類型及其應(yīng)用_第3頁
第3章-數(shù)據(jù)類型及其應(yīng)用_第4頁
第3章-數(shù)據(jù)類型及其應(yīng)用_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本章講授要點(diǎn):介紹C語言的數(shù)據(jù)類型,常量與變量,運(yùn)算符與表達(dá)式,數(shù)據(jù)的輸入和輸出等。重點(diǎn):掌握數(shù)據(jù)類型及各種類型數(shù)據(jù)混合運(yùn)算規(guī)則和數(shù)據(jù)的輸入和輸出等。第3章數(shù)據(jù)類型及其應(yīng)用1第3章數(shù)據(jù)類型及其應(yīng)用3.1常量3.2變量3.3運(yùn)算符和表達(dá)式3.4數(shù)據(jù)的輸出3.5數(shù)據(jù)的輸入數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void字符類型char

枚舉類型enum整型實(shí)型(浮點(diǎn)型)單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型

long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作其值不可再分解!由一個(gè)或多個(gè)數(shù)據(jù)類型構(gòu)造而成。是一種特殊而重要的數(shù)據(jù)類型。說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBMPC機(jī)為例:基本數(shù)據(jù)類型longdouble128-1.2e-4932~1.2e4932標(biāo)識符定義:用來標(biāo)識變量、常量、函數(shù)等的字符序列。組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線;大小寫敏感;不能使用關(guān)鍵字。長度:最長32個(gè)字符。命名原則:見名知意;不宜混淆,

例如:l與I,o與0容易混淆。舉例:判斷下列標(biāo)識符號合法性。sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b3.1常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))。分類:分類常量示例數(shù)值型常量整型常量-123,076,0x2a實(shí)型(浮點(diǎn)型)常量0.618,3.14e5字符型常量字符常量‘P’,‘2’轉(zhuǎn)義字符\n,\t字符串常量“Hello!”,“12345”符號常量#definePI3.141593.1常量

常量十進(jìn)制八進(jìn)制十六進(jìn)制指數(shù)形式具有特定含義習(xí)慣上符號常量的標(biāo)識符用大寫字母;變量標(biāo)識符用小寫字母。三種形式:十進(jìn)制整數(shù):由數(shù)字0-9和正負(fù)號表示,例如:123,-456,0;八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0-7表示,例如:0123,011;

十六進(jìn)制整數(shù):由0x開頭,后跟0-9,a-f,A-F表示,例如:0x123,0Xff。例:12與12L例:30000為int型65536為longint型整型常量根據(jù)其值所在范圍確定其數(shù)據(jù)類型,其中在整常量后加字母l或L,認(rèn)為它是longint型常量。問題:0123=()100x123=()100Xff=()1083291255問題:0123=()100x123=()100Xff=()10★整型常量(整常數(shù))3.1常量兩種形式:十進(jìn)制數(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型。+.314159

1符號位4個(gè)字節(jié)指數(shù)實(shí)型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存放,例如:3.141593.1常量★實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù))定義:用單引號括起來的單個(gè)普通字符或轉(zhuǎn)義字符。字符常量的值:該字符的ASCII碼值。<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符例如:‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’例如:‘A’-------’\101’-------’\x41’--------65例如:‘A’——65‘a(chǎn)’——97‘0’——48‘\n’——10例如:‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示。轉(zhuǎn)義字符舉例:#include<stdio.h>voidmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’3.1常量★字符常量aaa字符常量與字符串常量不同定義:用雙引號(“”)括起來的字符序列。存儲:每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志。hello\0例如:字符串“hello”在內(nèi)存中a

a\0‘a(chǎn)’“a”例如:空串“”\0舉例:

charch;ch=“A”;舉例:

charch;ch=‘A’;3.1常量★字符串常量兩點(diǎn)說明:

1)一般用大寫字母;2)是宏定義預(yù)處理命令,不是C語句。例如:#definePI3.14159符號常量:用標(biāo)識符代表常量。定義格式:#define符號常量常量[實(shí)例3-3]符號常量的使用。#definePI3.14159voidmain(){floats,r;r=10;s=PI*r*r;printf(“s=%f\n”,s);}運(yùn)行結(jié)果:s=314.1589973.1常量編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元。…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機(jī)數(shù)定義:其值可以改變的量。三要素:變量名、變量類型和變量值。變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時(shí)賦初值。3.2變量占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字。short≤int≤long;可用sizeof(類型標(biāo)識符)進(jìn)行度量。舉例: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;*/沒有字符串變量,用字符數(shù)組存放!3.2變量★整型變量★實(shí)型變量float:占4字節(jié),提供6-7位有效數(shù)字;double:占8字節(jié),提供15-16位有效數(shù)字;longdouble:占16字節(jié),提供18-19位有效數(shù)字?!镒址妥兞孔址兞看娣抛址鸄SCII碼;char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算。舉例:

#definePRICE12.5#include<stdio.h>voidmain(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結(jié)果運(yùn)行結(jié)果:total=37.500000,ch1=d3.2變量★指針的基本概念

內(nèi)存單元的編號叫做地址,通常也把這個(gè)地址稱為指針。在C語言中,允許用一個(gè)變量來存放指針,這種變量稱為指針變量。

3.2變量變量的地址--指針★指針變量的定義

類型說明符*指針變量名;舉例:int*p1;//表示p1是一個(gè)指針變量,它的值是某個(gè)整型變量的地址。變量的指針、變量值與指針變量:可見:上圖中整型變量a/b/c的指針分別指向內(nèi)存地址2001/2003/2005;變量值分別為5/0/8;指針變量分別為p1/p2/p3。指針即地址!運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:(!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=及其擴(kuò)展)條件運(yùn)算符:(?:)逗號運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)3.3運(yùn)算符和表達(dá)式加/減/乘/除/取余/自增/自減小于/小于等于/等于/大于/大于等于/不等于邏輯非/邏輯與/邏輯或左移/右移/按位取反/按位或/按位異或/按位與指針/取地址兩種結(jié)構(gòu)成員訪問括號/負(fù)號運(yùn)算符功能運(yùn)算符與運(yùn)算量的關(guān)系要求運(yùn)算量的個(gè)數(shù)要求運(yùn)算量的類型運(yùn)算符優(yōu)先級別結(jié)合方向結(jié)果的類型學(xué)習(xí)運(yùn)算符應(yīng)注意:3.3運(yùn)算符和表達(dá)式例如:5/2=

-5/2.0=例如:5%2=-5%2=1%10=5%1=5.5%22-2.51-110()3.3運(yùn)算符和表達(dá)式★基本算術(shù)運(yùn)算符:+-*/%結(jié)合方向:從左向右優(yōu)先級:-

---->*

/%----->+-說明:“-”可為單目運(yùn)算符時(shí),采用右結(jié)合性;兩整數(shù)相除,結(jié)果為整數(shù);求余數(shù)要求兩側(cè)均為整型數(shù)據(jù)。例如:j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=43.3運(yùn)算符和表達(dá)式★自增、自減運(yùn)算符:++--作用:使變量值加1或減1i=i+1;j=ii=i-1;j=ij=i;i=i+1j=i;i=i-1學(xué)會拆分!種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值;后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例如:-i++i=3;printf(“%d”,-i++);3.3運(yùn)算符和表達(dá)式★自增、自減運(yùn)算符:++--說明:++--不能用于常量和表達(dá)式,例如:5++,(a+b)++++--結(jié)合方向:

自右向左優(yōu)先級:-++-------->*/%----->+--i++-(i++)-3例如:j+++k;(j++)+k;j+k;j=j+1;簡單賦值運(yùn)算符符號:=格式:變量標(biāo)識符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量。復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2exp1=exp1opexp2x*=y+8x=x*(y+8)x%=3x=x%3例如:a=3;d=func();c=d+2;3.3運(yùn)算符和表達(dá)式★賦值運(yùn)算符和表達(dá)式a+=3a=a+3例如:3=x-2*y;a+b=3;例如:inti;i=2.56;//i=2例如:a=b=c=5;a=(b=5);a=5+(c=6);a=(b=4)+(c=6);a=(b=10)/(c=2);//表達(dá)式值為5,a,b,c值為5//b=5,a=5//表達(dá)式值11,c=6,a=11//表達(dá)式值10,a=10,b=4,c=6//表達(dá)式值5,a=5,b=10,c=23.3運(yùn)算符和表達(dá)式★賦值運(yùn)算符和表達(dá)式賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型。賦值表達(dá)式的值與變量值相等,且可嵌套!說明:結(jié)合方向:

自右向左;左側(cè)必須是變量,不能是常量或表達(dá)式例如:floatf;inti;i=10;f=i;//f=10.0例如:a=12;a+=a-=a*a;//a=-2643.3運(yùn)算符和表達(dá)式★賦值運(yùn)算符和表達(dá)式等價(jià)于a=a+(a=a-(a*a))a1=a*a;a2=a-a1;a=a2;a3=a+a2;a=a3;//a1=144;a2=12-144=-132;a=-132;a3=-132+(-132)=-264;a=-264形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右逗號表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語句中//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//逗號表達(dá)式,表達(dá)式值18,x=3//1,2,3//3,2,33.3運(yùn)算符和表達(dá)式★逗號運(yùn)算符和表達(dá)式例如:a=3*5,a*4a=3*5,a*4,a+5例如:x=(a=3,6*3)x=a=3,6*a例如:a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);種類:<<===>=>!=結(jié)合方向:自左向右優(yōu)先級別:<<=>>===!=優(yōu)先級(高)優(yōu)先級(低)3.3運(yùn)算符和表達(dá)式★關(guān)系運(yùn)算符和表達(dá)式例如:若a=0;b=0.5;x=0.3;則a<=x<=b的值為0例如:5>2>7>8在C中是允許的,值為0例如:inti=1,j=7,a;a=i+(j%4!=0);7%4=3;3!=0值為1;a=1+1=2例如:‘a(chǎn)’>097大于0,結(jié)果為1‘A’>10065大于100,結(jié)果為0102例如:inta=0,b=1;

if(a=b)

printf(“aequaltob”);elseprintf(“anotequaltob”);例如:1.0/3.0*3.0==1.0可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-63.3運(yùn)算符和表達(dá)式★關(guān)系運(yùn)算符和表達(dá)式應(yīng)避免對實(shí)數(shù)作相等或不等的判斷!注意區(qū)分“=”與“==”!a==bab!a!ba&&ba||b真假真假假假真真種類:!&&||邏輯運(yùn)算真值表C語言中,運(yùn)算量:

0表示“假”,非0表示“真”。

運(yùn)算結(jié)果:

0表示“假”,1表示“真”。真假假假假假真真假假真真真假真真3.3運(yùn)算符和表達(dá)式★邏輯運(yùn)算符和表達(dá)式請牢記!!(2)&&(11)||(12)高低例如:a<=x&&x<=ba>b&&x>ya==b||x==y!a||a>b優(yōu)先級:結(jié)合方向:!:從右向左&&:從左向右||:從左向右//(a<=x)&&(x<=b)

//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)3.3運(yùn)算符和表達(dá)式★邏輯運(yùn)算符和表達(dá)式例如:a&&b&&c//只在a為真時(shí),才判別b的值;即a為假時(shí),值為假//只在a、b都為真時(shí),才判別c的值。例如:a||b||c//只在a為假時(shí),才判別b的值;即a為真時(shí),值為真//只在a、b都為假時(shí),才判別c的值。例如:a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結(jié)果m=0,n=13.3運(yùn)算符和表達(dá)式★邏輯運(yùn)算符和表達(dá)式短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。先計(jì)算m值,由于為假(0),則不再繼續(xù)計(jì)算下去!一般形式:expr1?expr2:expr3功能:相當(dāng)于條件語句,但不能取代一般if語句執(zhí)行過程:例如:x?‘a(chǎn)’:‘b’//x=0,表達(dá)式值為‘b’;x?0,表達(dá)式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.53.3運(yùn)算符和表達(dá)式★條件運(yùn)算符和表達(dá)式不同類型數(shù)據(jù)間的轉(zhuǎn)換隱式轉(zhuǎn)換——運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型!強(qiáng)制轉(zhuǎn)換——一般形式:(類型名)(表達(dá)式)例如:(int)(x+y)(int)x+y(double)(3/2)說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變。例如:#include<stdio.h>voidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí);賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí);輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式;函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論