C語言教學(xué)課件之第3章數(shù)據(jù)類型表達式.ppt
《C語言教學(xué)課件之第3章數(shù)據(jù)類型表達式.ppt》由會員分享,可在線閱讀,更多相關(guān)《C語言教學(xué)課件之第3章數(shù)據(jù)類型表達式.ppt(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第1張,沒有規(guī)矩,不成方圓。,第2張,3.1C的數(shù)據(jù)類型3.2常量與變量3.3整型數(shù)據(jù)3.4實型數(shù)據(jù),第3章數(shù)據(jù)類型、運算符與表達式,第3張,3.5字符型數(shù)據(jù)3.6變量賦初值3.7各類數(shù)值型數(shù)據(jù)間的混合運算3.8算術(shù)運算符和算術(shù)表達式3.9賦值運算符和賦值表達式3.10逗號運算符和逗號表達式,第4張,本章大綱,數(shù)據(jù)類型、運算符與表達式(7學(xué)時)教學(xué)內(nèi)容:C的數(shù)據(jù)類型:基本數(shù)據(jù)類型;自定義的數(shù)據(jù)類型常量和變量:符號常量與一般常量;變量的定義和賦值各類型數(shù)據(jù)的混合運算運算符與表達式:算術(shù)運算符;關(guān)系運算符與邏輯運算符;表達式的執(zhí)行順序,第5張,基本要求:了解C語言的數(shù)據(jù)類型;了解常量的概念、常量的分類;了解整型、實型和字符型數(shù)據(jù)的存儲形式;掌握變量的概念、變量的分類及變量的初始化方法;掌握各類數(shù)值型數(shù)據(jù)間的混合運算規(guī)則;掌握常見的各種運算符及表達式;理解運算符的優(yōu)先級與結(jié)合性。重點:基本數(shù)據(jù)類型;變量定義和賦值;運算符與表達式難點:自定義的數(shù)據(jù)類型;運算符優(yōu)先級。,第6張,數(shù)據(jù)類型在數(shù)據(jù)結(jié)構(gòu)中的定義是一個值的集合以及定義在這個值集上的一組操作。,基本類型:整型,字符型,浮點型(單精度型,雙精度型),枚舉類型;構(gòu)造類型:數(shù)組類型,結(jié)構(gòu)體類型,共用體類型,指針類型,空類型。,數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.可對數(shù)據(jù)進行的操作,3.1C的數(shù)據(jù)類型,第7張,數(shù)據(jù)結(jié)構(gòu)是指同一數(shù)據(jù)元素類中各數(shù)據(jù)元素之間存在的關(guān)系。數(shù)據(jù)結(jié)構(gòu)分別為邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)(物理結(jié)構(gòu))和數(shù)據(jù)的運算。數(shù)據(jù)的邏輯結(jié)構(gòu)是對數(shù)據(jù)之間關(guān)系的描述,有時就把邏輯結(jié)構(gòu)簡稱為數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)在計算機中的表示(映像)稱為數(shù)據(jù)的物理(存儲)結(jié)構(gòu)。,數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計算機硬件和計算機軟件三者之間的一門核心課程。數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計的基礎(chǔ),而且是設(shè)計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他系統(tǒng)程序的重要基礎(chǔ)。,常用數(shù)據(jù)結(jié)構(gòu):數(shù)組、線性表、鏈表、隊列、棧、樹、圖等的定義、存儲和操作,數(shù)據(jù)結(jié)構(gòu),補充了解,第8張,(1)不同的計算機語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的。(2)處理同一類問題,如果數(shù)據(jù)結(jié)構(gòu)不同,算法也會不同。,第9張,3.2常量與變量,常量:在程序運行過程中,其值不能被改變的量稱為常量。,3.2.1常量和符號常量,字面常量或直接常量,符號常量:以用一個標識符代表一個常量,例如:12,0,-3為整型常量;4.6、-1.23為實型常量;‘a(chǎn)’,‘d’為字符常量。,#definePRICE30,第10張,例3.1符號常量的使用。,#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);},total=300,1.習(xí)慣上,符號常量名用大寫2.程序中不能再次對符號常量賦值。,#definePRICE30main(){……PRICE=40;……},,第11張,這么麻煩給常量起了名字,有什么好處嗎?,(1)含義清楚。定義符號常量名時應(yīng)考慮“見名知意”。(2)在需要改變一個常量時能做到“一改全改”。,#definePRICE30一看就知道PRICE表示價格,但千萬不要在定義圓周率的時候也這樣寫,雖然不錯,但達不到“見名知意”的目的了。#definePRICE3.1415926,第12張,3.2.2變量,變量是指在程序運行期間,其值可以改變的量。1.用來存放數(shù)據(jù)2.對應(yīng)內(nèi)存中的一個特定的存儲單元3.有名字,以便被引用,1.怎么對應(yīng)到特定的存儲單元呢?由編譯系統(tǒng)完成。(參閱《編譯原理》),2.變量的名字要怎么起呢?,第13張,?,變量怎么對應(yīng)到特定的存儲單元呢?,,存儲單元地址,,,3,,變量值,變量名,,,存儲單元地址一般用十六進制數(shù)表示,與變量名一一對應(yīng),類似于身份證號,唯一但難記,類似于身份證號。,,,存儲單元,每個存儲單元都由一個唯一的存儲單元地址和存儲在單元里面的內(nèi)容組成,為了便于引用存儲單元而起的名字。類似于人名,2004H,,存儲單元的內(nèi)容,a,第14張,標識符(identifier):用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標識符。,標識符的命名規(guī)則:(1)只能由字母、數(shù)字和下劃線三種字符組成,(2)且第一個字符必須為字母或下劃線。必須同時滿足以上兩個條件。,不合法的標識符名:M.d.John,¥123,3d64,a>b,合法的標識符名:while,_total,student_name,lotus_1_2_3,Class,class,BASIC,C語言區(qū)分大小寫!Class和CLASS,Class,cLass都不同!,,第15張,(1)符合標識符的2個命名規(guī)則;(2)不能和關(guān)鍵字(32個)重名。必須同時滿足以上兩個條件。,變量的名字要怎么起呢?,合法的變量名:num,day,x1,不合法的變量名:3num,day‘,while,“先定義,后使用”,我是君子,先說了才會用??!,強制類型定義,,第16張,3.3整型數(shù)據(jù),3.3.1整型常量的表示方法,整型常量即整常數(shù)。(1)十進制整數(shù)。(2)八進制整數(shù)。(3)十六進制整數(shù)。,如123表示十進制數(shù)123,以0開頭的數(shù)是八進制數(shù)。如0123表示八進制數(shù)123,-011表示八進制數(shù)-11,以0 x開頭的數(shù)是十六進制數(shù)。如0 x123,代表十六進制數(shù)123-0 x12等于十進制數(shù)-18,還記得進制間如何轉(zhuǎn)換嗎?忘了的趕快找找啊!,單片機程序設(shè)計中經(jīng)常用到,第17張,1.整型數(shù)據(jù)在內(nèi)存中的存放形式,數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。,每一個整型數(shù)據(jù)(包含變量和常量)在內(nèi)存中占2個或4個字節(jié)。,(a)存放的示意圖(b)實際存放圖,10=(1010)2,,例子:,3.3.2整型變量,第18張,在計算機系統(tǒng)中,數(shù)值一律用補碼來表示(存儲)。主要原因:使用補碼,可以將符號位和其它位統(tǒng)一處理;同時,減法也可按加法來處理。另外,兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進位,則進位被舍棄。,補碼(complement),一個正數(shù)的補碼和其原碼的形式相同。,負數(shù)補碼的求法:(1)寫出該數(shù)的絕對值的二進制形式;(2)按位取反;(3)再加1。,原碼又是什么呢?,掌握,第19張,原碼是一種計算機中對數(shù)字的二進制定點表示方法。原碼表示法在數(shù)值前面增加了一位符號位(即最高位為符號位),該位為0表示正數(shù),該位為1表示負數(shù),其余位表示數(shù)值的大小。,補充內(nèi)容:原碼(trueform),①小數(shù)原碼的定義[X]=X(0≤X<1)=1-X(-1<X≤0)例如:X=+0.1011,[X]原=0.1011X=-0.1011,[X]原=1.1011,②整數(shù)原碼的定義[X]原=X(0≤X<2n)=2n-X(-2n<X≤0)例如:[+1011]原=00001011[-1011]原=10001011,了解,第20張,2.整型變量的分類,(1)基本整型(int)(2)短整型(shortint)(3)長整型(longint),修飾符:(1)有符號(signed)(2)無符號(unsigned),,,,,,,,,,,,,,有符號基本整型[signed]int無符號基本整型unsignedint,有符號短整型[signed]short[int]無符號短整型unsignedshort[int],有符號長整型[signed]long[int]無符號長整型unsignedlong[int],[]里的關(guān)鍵字可以省略!,第21張,如果內(nèi)存中有個數(shù)據(jù)是這樣存儲的,那么它是多少?,如果是無符號數(shù),它是65535,如果是有符號數(shù),它是-1,例子,第22張,3.整型變量的定義,inta,b;unsignedshortc,d;longe,f;,C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”,對變量的定義,一般是放在一個函數(shù)的開頭部分的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序)。,第23張,例3.2整型變量的定義與使用。,main(){inta,b,c,d;/*指定a、b、c、d為整型變量*/unsignedu;/*指定u為無符號整型變量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d);},第24張,0000000000001100(a=12)+0000000000001010(u=10)-----------------0000000000010110(c=22),第25張,00000000000110001111111111100111+1-----------------1111111111101000(b=-24的補碼)+0000000000001010(u=10)-----------------1111111111110010(d的補碼)-1-----------------11111111111100010000000000001110(d的絕對值=14),求b=-24的補碼,,a+u=22,b+u=-14,第26張,4.整型數(shù)據(jù)的溢出,在Turboc中一個int型變量的最大允許值為32767,如果再加1,會出現(xiàn)什么情況?,main(){inta,b;a=32767;b=a+1;printf("%d,%d",a,b);},32767,-32768,32767+1不等于32768嗎?,第27張,0111111111111111(a=32767)+1-----------------1000000000000000(負數(shù))?-1-----------------01111111111111111000000000000000(b的絕對值,即32768)真值為-32768,既然是這樣,那要怎么改才能得到預(yù)期的結(jié)果32768呢?想一想啦!,第28張,3.3.3整型常量的類型,(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483648~+2147483647范圍內(nèi),則認為它是長整型,可以將它賦值給一個longint型變量。(3)一個整常量后面加一個字母u,認為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。(5)在一個整常量后面加一個字母l或l,則認為是longint型常量。例如123l、432l、0l等。,第29張,3.4浮點型數(shù)據(jù),3.4.1浮點型常量的表示方法,浮點數(shù)(floating-pointnumber)即實數(shù)(realnumber)。,十進制小數(shù)形式。它由數(shù)字和小數(shù)點組成,指數(shù)形式,123e3,123E3,.123,123.,123.0,0.0,e32.1e3.5.,e,,,注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),第30張,“規(guī)范化的指數(shù)形式”:即在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字。一個實數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。,知道了!123.456可以表示為123.456e0,12.3456e1、1.23456e2、0.123456e3、0.0123456e4、0.00123456e5……,無數(shù)種?……,原來1.23456e2是規(guī)范化的指數(shù)形式。,第31張,3.4.2浮點型變量,圖3.7實數(shù)3.14159在內(nèi)存中的存放形式示意,1.浮點型數(shù)據(jù)在內(nèi)存中的存放形式,一個浮點型數(shù)據(jù)在內(nèi)存中占4個或8個字節(jié)(32位或64位),按照指數(shù)形式存儲的,純小數(shù)部分,采用規(guī)范化的指數(shù)形式,了解,小數(shù)位數(shù)越多,精度越高,指數(shù)位數(shù)越多,表示的數(shù)的范圍越大。,第32張,2.浮點型變量的分類,C浮點型變量分為三類:單精度(float)雙精度(double)長雙精度型(longdouble),占4個字節(jié)(32位),占8個字節(jié)(64位),占16個字節(jié)(128位),floatx,y;,doublez;,longdoublet;,第33張,3.浮點型數(shù)據(jù)的舍入誤差,main(){floata,b;a=123456,789e5;b=a+20;printf("%f",b);},應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。,浮點型用有限的存儲單元存儲,所以提供的有效數(shù)字也就有限,故會產(chǎn)生舍入誤差。,,12345678848.000000,第34張,3.4.3浮點型常量的類型,f=2.45678*4523.65,雙精度,雙精度,單精度,*,,取前7位,提高精度運算速度降低,難道不能就按單精度計算嗎?,f=2.45678f*4523.65F,第35張,3.5字符型數(shù)據(jù),3.5.1字符常量,1.用單引號(即撇號)括起來的一個字符。,如‘a(chǎn)’,‘x’,‘D’,‘?’,‘$’。,2.以一個“\”開頭的字符序列。是“控制字符”,在屏幕上是不能顯示的,如‘\n’,‘\t’,‘\b’,‘\r’,‘\\’,‘\’’,‘\’’’,‘\ddd’,‘\xhh’,‘a’和‘A’相同嗎?,不同!,第36張,例3.5轉(zhuǎn)義字符的使用。,main(){printf("abc\tde\rf\tg\n");printf("h\ti\b\bjk");},fabcgdehjik,fgdehjk,打印機,屏幕,白紙黑字,空說無憑,第37張,3.5.2字符變量,1.字符型變量用來存放字符常量2.只能放一個字符3.一個字符變量在內(nèi)存中占一個字節(jié),字符變量的定義:charc1,c2;,字符變量的賦值:c1=a;c2=b;,,,字符變量的定義和賦值:charc1=‘a(chǎn)’,c2=b;,第38張,3.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法,存儲,輸出,將該字符的相應(yīng)的ASCII代碼放到存儲單元中,1.以字符形式輸出2.以以整數(shù)形式輸出,,,示意圖,實際存儲情況,,,第39張,main(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);/*以字符形式輸出*/printf("%d%d\n",c1,c2);/*轉(zhuǎn)換為整數(shù)形式輸出*/},例3.6向字符變量賦以整數(shù)。,%c表示以字符形式輸出。,%d表示以帶符號的十進制整數(shù)形式輸出。,※,※,ab9798,通用,第40張,例3.7大小寫字母的轉(zhuǎn)換。,main(){charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf("%c%c",c1,c2);},AB,掌握,第41張,3.5.4字符串常量,字符串常量是一對雙引號括起來的字符序列。,如:“CHINA”,”a”,“howdoyoudo.”,”123.45”,“a”,=,?,,,“a”是字符串常量,‘a(chǎn)’,‘a(chǎn)’是字符常量,第42張,charc;,c=a;,c="a";,c=“CHINA",考考你,下面3個賦值語句中哪些是對的?為什么?,,,√,1.在C語言中沒有專門的字符串變量2.必須使用字符數(shù)組,數(shù)組中每一個元素存放一個字符。,第43張,3.6變量賦初值,1.允許在定義變量的同時使變量初始化,2.部分賦初值,3.同種類型的可以合并定義,inta=3;floatf=3.56;charc=a;,inta,b,c=5;,inta=3,b=3,c=3;,,inta=b=c=3;,?,第44張,3.7各類數(shù)值型數(shù)據(jù)間的混合運算,圖3.10,,轉(zhuǎn)換規(guī)則,縱向的箭頭表示數(shù)據(jù)轉(zhuǎn)換的方向,橫向向左的箭頭表示必定的轉(zhuǎn)換,第45張,10+‘a(chǎn)’+i*f-d/e,假設(shè)i是int變量,值為3,f是float變量,值為2.0,d是double變量,值為4.0,e為long型,值為8,,,,*優(yōu)先級高于+,①算10+‘a(chǎn)’:把‘a(chǎn)’轉(zhuǎn)換成int為97,再加10,等于107,,107+i*f-d/e,,②算i*f:把i和f都轉(zhuǎn)換成double,然后相乘得6.0,,,優(yōu)先級相同,107+6.0-d/e,,,+和-優(yōu)先級相同,,,③算107+6.0:把107轉(zhuǎn)換成double,和為113.0,,,/優(yōu)先級高于-,,,④算d/e:把e轉(zhuǎn)換成double,商為0.5,113.0-d/e,113.0-0.5,,⑤把113.0轉(zhuǎn)換成double,差為112.5,,第46張,3.8算術(shù)運算符和算術(shù)表達式,1.算術(shù)運算符(+-*/%)2.關(guān)系運算符(><>=<===!=)3.邏輯運算符(?。?x=3.600000,i=3,在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化,第52張,4.自增、自減運算符,++i先使i的值加1,然后再使用i,i++先使用i,然后再使i的值加1,自增(減)運算符常用于:1.循環(huán)語句中,使循環(huán)變量自動加1或減1。2.指針變量,使指針指向下一個地址。,自增運算符++,--i先使i的值減1,然后再使用i,i--先使用i,然后再使i的值減1,自減運算符--,第53張,i=3;printf("%d",++i);,i=3;printf("%d",i++);,i=3;j=++i;printf("%d",j);,i=3;j=i++;printf(“%d”,j);,4,3,3,4,自增運算符(++)和自減運算符(--),只能用于變量,而不能用于常量或表達式,++和--的優(yōu)先級:第2級。++和--的結(jié)合方向是“自右至左”。,5++,(a+b)++,不合法,第54張,3.9賦值運算符和賦值表達式,1.賦值運算符,賦值運算符就是“=”,作用是執(zhí)行一次賦值操作,如a=3a=3+c,優(yōu)先級:第14級,結(jié)合性:右結(jié)合性,第55張,整型,字符型,無符號,有符號,字符的8位放到整型變量的低8位,,,符號擴展,高8位補零,,將低8位放到字符變量中,(截斷),,舍棄實數(shù)的小數(shù)部分,數(shù)值不變,以浮點數(shù)形式存儲到變量中,,單精度,雙精度,,,數(shù)值不變有效值位數(shù)擴展到16位,截取前7位有效數(shù)字,,2.類型轉(zhuǎn)換的賦值規(guī)則,實質(zhì):按存儲單元中的存儲形式直接傳送。,第56張,inti;i=3.56;printf("i=%d",i);,i=3,main(){unsigneda;intb=-1;a=b;printf("%u",a);},65535,例3.9有符號數(shù)據(jù)傳送給無符號變量。,例把浮點型傳送給整型變量。,第57張,3.復(fù)合的賦值運算符,C語言規(guī)定可以使用10種復(fù)合賦值運算符。即:+=,-=,*=,/=,%=,>=,,a=b=c=5a=5+(c=6)a=(b=4)+(c=6),如果a的初值是12,a+=a-=a*a運算后a的值是多少?,第59張,1.逗號運算符,又稱為“順序求值運算符”2.逗號運算符是所有運算符中級別最低的3.用來將兩個表達式連接起來,逗號表達式的一般形式:表達式1,表達式2逗號表達式的擴展形式:表達式1,表達式2,表達式3……表達式n,求解的過程是:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。,①x=(a=3,6*3)②x=a=3,6*ax值是多少?表達式值是多少?,如:3+5,6+8,(a=3*5,a*4),a+5運算后a的值是多少?表達式的值是多少?,3.10逗號運算符和逗號表達式,第60張,注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如:printf("%d,%d,%d",a,b,c);printf("%d,%d,%d",(a,b,c),b,c);,,,逗號運算符,第61張,一分耕耘,一分收獲!,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言 教學(xué) 課件 數(shù)據(jù)類型 表達式
鏈接地址:http://kudomayuko.com/p-11494797.html