C語言教學(xué)之?dāng)?shù)據(jù)類型表達式_第1頁
C語言教學(xué)之?dāng)?shù)據(jù)類型表達式_第2頁
C語言教學(xué)之?dāng)?shù)據(jù)類型表達式_第3頁
C語言教學(xué)之?dāng)?shù)據(jù)類型表達式_第4頁
C語言教學(xué)之?dāng)?shù)據(jù)類型表達式_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1C語言教學(xué)之?dāng)?shù)據(jù)類型表達式第2張3.5字符型數(shù)據(jù)3.6變量賦初值3.7各類數(shù)值型數(shù)據(jù)間的混合運算3.8算術(shù)運算符和算術(shù)表達式3.9賦值運算符和賦值表達式3.10逗號運算符和逗號表達式第1頁/共60頁第3張本章大綱數(shù)據(jù)類型、運算符與表達式(7學(xué)時)教學(xué)內(nèi)容:C的數(shù)據(jù)類型:基本數(shù)據(jù)類型;自定義的數(shù)據(jù)類型常量和變量:符號常量與一般常量;變量的定義和賦值各類型數(shù)據(jù)的混合運算運算符與表達式:算術(shù)運算符;關(guān)系運算符與邏輯運算符;表達式的執(zhí)行順序第2頁/共60頁第4張基本要求:了解C語言的數(shù)據(jù)類型;了解常量的概念、常量的分類;了解整型、實型和字符型數(shù)據(jù)的存儲形式;掌握變量的概念、變量的分類及變量的初始化方法;掌握各類數(shù)值型數(shù)據(jù)間的混合運算規(guī)則;掌握常見的各種運算符及表達式;理解運算符的優(yōu)先級與結(jié)合性。重點:基本數(shù)據(jù)類型;變量定義和賦值;運算符與表達式難點:自定義的數(shù)據(jù)類型;運算符優(yōu)先級。第3頁/共60頁第5張

數(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ù)類型第4頁/共60頁第6張

數(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)補充了解第5頁/共60頁第7張(1)不同的計算機語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的。(2)處理同一類問題,如果數(shù)據(jù)結(jié)構(gòu)不同,算法也會不同。第6頁/共60頁第8張3.2常量與變量常量:在程序運行過程中,其值不能被改變的量稱為常量。3.2.1常量和符號常量字面常量或直接常量符號常量:以用一個標識符代表一個常量例如:12,0,-3為整型常量;4.6、-1.23為實型常量;‘a(chǎn)’,‘d’為字符常量。#definePRICE30第7頁/共60頁第9張例3.1符號常量的使用。#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}total=3001.習(xí)慣上,符號常量名用大寫2.程序中不能再次對符號常量賦值。#definePRICE30main(){……PRICE=40;……}×第8頁/共60頁第10張這么麻煩給常量起了名字,有什么好處嗎?(1)含義清楚。定義符號常量名時應(yīng)考慮“見名知意”。(2)在需要改變一個常量時能做到“一改全改”。#definePRICE30一看就知道PRICE表示價格,但千萬不要在定義圓周率的時候也這樣寫,雖然不錯,但達不到“見名知意”的目的了。#definePRICE3.1415926第9頁/共60頁第11張3.2.2變量變量是指在程序運行期間,其值可以改變的量。1.用來存放數(shù)據(jù)2.對應(yīng)內(nèi)存中的一個特定的存儲單元3.有名字,以便被引用1.怎么對應(yīng)到特定的存儲單元呢?由編譯系統(tǒng)完成。(參閱《編譯原理》)2.變量的名字要怎么起呢?第10頁/共60頁第12張?變量怎么對應(yīng)到特定的存儲單元呢?存儲單元地址3變量值變量名存儲單元地址一般用十六進制數(shù)表示,與變量名一一對應(yīng),類似于身份證號,唯一但難記,類似于身份證號。存儲單元每個存儲單元都由一個唯一的存儲單元地址和存儲在單元里面的內(nèi)容組成為了便于引用存儲單元而起的名字。類似于人名2004H存儲單元的內(nèi)容a第11頁/共60頁第13張標識符(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都不同!×第12頁/共60頁第14張(1)符合標識符的2個命名規(guī)則;(2)不能和關(guān)鍵字(32個)重名。必須同時滿足以上兩個條件。變量的名字要怎么起呢?合法的變量名:num,day,x1不合法的變量名:3num,day‘,while“先定義,后使用”我是君子,先說了才會用?。娭祁愋投x×第13頁/共60頁第15張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以0x開頭的數(shù)是十六進制數(shù)。如0x123,代表十六進制數(shù)123-0x12等于十進制數(shù)-18還記得進制間如何轉(zhuǎn)換嗎?忘了的趕快找找啊!單片機程序設(shè)計中經(jīng)常用到第14頁/共60頁第16張1.整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。每一個整型數(shù)據(jù)(包含變量和常量)在內(nèi)存中占2個或4個字節(jié)。(a)存放的示意圖(b)實際存放圖10=(1010)2例子:3.3.2整型變量第15頁/共60頁第17張

在計算機系統(tǒng)中,數(shù)值一律用補碼來表示(存儲)。主要原因:使用補碼,可以將符號位和其它位統(tǒng)一處理;同時,減法也可按加法來處理。另外,兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進位,則進位被舍棄。補碼(complement)

一個正數(shù)的補碼和其原碼的形式相同。負數(shù)補碼的求法:(1)寫出該數(shù)的絕對值的二進制形式;(2)按位取反;(3)再加1。原碼又是什么呢?掌握第16頁/共60頁第18張原碼是一種計算機中對數(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.1011

X=-0.1011,

[X]原=1.1011

②整數(shù)原碼的定義[X]原=X(0≤X<2n)

=2n-X(-2n<X≤0)例如:[+1011]原=00001011

[-1011]原=10001011了解第17頁/共60頁第19張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)鍵字可以省略!第18頁/共60頁第20張如果內(nèi)存中有個數(shù)據(jù)是這樣存儲的,那么它是多少?如果是無符號數(shù),它是65535如果是有符號數(shù),它是-1例子第19頁/共60頁第21張3.整型變量的定義

inta,b;unsignedshortc,d;longe,f;C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”對變量的定義,一般是放在一個函數(shù)的開頭部分的聲明部分(也可以放在函數(shù)中某一分程序內(nèi),但作用域只限它所在的分程序)。第20頁/共60頁第22張例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);

}第21頁/共60頁第23張0000000000001100(a=12)+0000000000001010(u=10)-----------------

0000000000010110(c=22)第22頁/共60頁第24張00000000000110001111111111100111+

1-----------------

1111111111101000(b=-24的補碼)+

0000000000001010(u=10)-----------------

1111111111110010(d的補碼)

1-----------------

11111111111100010000000000001110(d的絕對值=14)求b=-24的補碼

a+u=22,b+u=-14第23頁/共60頁第25張4.整型數(shù)據(jù)的溢出在Turboc中一個int型變量的最大允許值為32767,如果再加1,會出現(xiàn)什么情況?main()

{inta,b;

a=32767;

b=a+1;

printf("%d,%d",a,b);

}32767,-3276832767+1不等于32768嗎?第24頁/共60頁第26張0111111111111111(a=32767)

1

-----------------

1000000000000000(負數(shù))?-

1

-----------------

01111111111111111000000000000000

(b的絕對值,即32768)真值為-32768

既然是這樣,那要怎么改才能得到預(yù)期的結(jié)果32768呢?想一想啦!第25頁/共60頁第27張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等。第26頁/共60頁第28張3.4浮點型數(shù)據(jù)3.4.1浮點型常量的表示方法浮點數(shù)(floating-pointnumber)即實數(shù)(realnumber)。十進制小數(shù)形式。它由數(shù)字和小數(shù)點組成指數(shù)形式123e3,123E3.123,123.,123.0,0.0e32.1e3.5.,e×注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)第27頁/共60頁第29張“規(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ù)形式。第28頁/共60頁第30張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ù)的范圍越大。第29頁/共60頁第31張2.浮點型變量的分類C浮點型變量分為三類:單精度(float)雙精度(double)長雙精度型(longdouble)占4個字節(jié)(32位)占8個字節(jié)(64位)占16個字節(jié)(128位)floatx,y;doublez;longdoublet;第30頁/共60頁第32張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第31頁/共60頁第33張3.4.3浮點型常量的類型f=2.45678*4523.65

雙精度雙精度單精度*取前7位提高精度運算速度降低難道不能就按單精度計算嗎?f=2.45678f*4523.65F第32頁/共60頁第34張3.5字符型數(shù)據(jù)3.5.1字符常量1.用單引號(即撇號)括起來的一個字符。如‘a(chǎn)’,‘x’,‘D’,‘?’,‘$’

。2.以一個“\”開頭的字符序列。是“控制字符”,在屏幕上是不能顯示的如‘\n’,‘\t’,‘\b’,‘\r’,‘\\’,‘\’’,‘\’’’,‘\ddd’,‘\xhh’‘a’和‘A’相同嗎?不同!第33頁/共60頁第35張例3.5轉(zhuǎn)義字符的使用。main()

{printf("abc\tde\rf\tg\n");

printf("h\ti\b\bjk");

}fab

cgdehjikfgdehjk打印機屏幕白紙黑字空說無憑第34頁/共60頁第36張3.5.2字符變量1.字符型變量用來存放字符常量2.只能放一個字符3.一個字符變量在內(nèi)存中占一個字節(jié)字符變量的定義:char

c1,c2;字符變量的賦值:c1='a';c2='b';字符變量的定義和賦值:

charc1=‘a(chǎn)’,c2='b';第35頁/共60頁第37張3.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法存儲輸出將該字符的相應(yīng)的ASCII代碼放到存儲單元中1.以字符形式輸出2.以以整數(shù)形式輸出示意圖實際存儲情況第36頁/共60頁第38張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ù)形式輸出?!鵤b9798通用第37頁/共60頁第39張例3.7大小寫字母的轉(zhuǎn)換。main(){charc1,c2;

c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%c

%c",c1,c2);}AB掌握第38頁/共60頁第40張3.5.4字符串常量a\0字符串常量是一對雙引號括起來的字符序列。如:“CHINA”,”a”,“howdoyoudo.”,”123.45”“a”=?דa”是字符串常量‘a(chǎn)’‘a(chǎn)’是字符常量a第39頁/共60頁第41張charc;

c='a';c="a";c=“CHINA"

考考你下面3個賦值語句中哪些是對的?為什么?××√1.在C語言中沒有專門的字符串變量2.必須使用字符數(shù)組,數(shù)組中每一個元素存放一個字符。

第40頁/共60頁第42張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;?第41頁/共60頁第43張3.7各類數(shù)值型數(shù)據(jù)間的混合運算圖3.10轉(zhuǎn)換規(guī)則縱向的箭頭表示數(shù)據(jù)轉(zhuǎn)換的方向橫向向左的箭頭表示必定的轉(zhuǎn)換第42頁/共60頁第44張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,等于107107+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.5113.0

-d/e113.0-0.5⑤把113.0轉(zhuǎn)換成double,差為112.5第43頁/共60頁第45張3.8算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符 (+-*/%)2.關(guān)系運算符 (><>=<===!=)3.邏輯運算符 (!&&||)4.位運算符 (<<>>~&∧|)5.賦值運算符 (=及其擴展賦值運算符)6.條件運算符 (?:)7.逗號運算符 (,)8.指針運算符 (*和&)9.求字節(jié)數(shù)運算符 (sizeof)10.強制類型轉(zhuǎn)換運算符((類型))11.分量運算符(.->)12.下標運算符([

])13.其他 (如函數(shù)調(diào)用運算符())第44頁/共60頁第46張3.8.2算術(shù)運算符和算術(shù)表達式1.基本的算術(shù)運算符+:加法運算符或正值運算符-:減法運算符或負值運算符*:乘法運算符/:除法運算符%:模運算符或求余運算符如3+5、+3如5-2、-3如3*5如5/3=1,5/3的結(jié)果可能是-1,也可能是-2大部分是“向零取整”如7%4的值為3%兩側(cè)均應(yīng)為整型數(shù)據(jù)*不能寫成×第45頁/共60頁第47張常量變量函數(shù)

2.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性+-*/運算符運算對象用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合c語法規(guī)則的式子.例如:a*b/c-1.5+'a'優(yōu)先級:1.先按運算符的優(yōu)先級別高低次序執(zhí)行2.如果在一個運算對象兩側(cè)的運算符的優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”處理。

結(jié)合性:1.左結(jié)合性:即運算對象先與左面的運算符結(jié)合2.右結(jié)合性:有些運算符的結(jié)合方向為“自右至左”.算術(shù)表達式第46頁/共60頁第48張兩種類型轉(zhuǎn)換強制類型轉(zhuǎn)換自動類型轉(zhuǎn)換若x為float型,則“x%3”不合法,必須用:“(int)x%3”如3+6.53.強制類型轉(zhuǎn)換運算符第47頁/共60頁第49張一般形式:(類型名)(表達式)(int)(x+y)先將x與y相加,然后將他們的和轉(zhuǎn)換成整型表達式應(yīng)該用括號括起來(int)x+y只將x轉(zhuǎn)換成整型,然后與y相加原來是這樣!第48頁/共60頁第50張例3.8強制類型轉(zhuǎn)換。main()

{floatx;

inti;

x=3.6;

i=(int)x;printf("x=%f,i=%d“,x,i);

}x=3.600000,i=3在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化第49頁/共60頁第51張4.自增、自減運算符++i先使i的值加1,然后再使用ii++先使用i,然后再使i的值加1自增(減)運算符常用于:1.循環(huán)語句中,使循環(huán)變量自動加1或減1。2.指針變量,使指針指向下一個地址。自增運算符++--i先使i的值減1,然后再使用ii--先使用i,然后再使i的值減1自減運算符--第50頁/共60頁第52張i=3;

printf("%d",++i);i=3;

printf("%d",i++);i=3;

j=++i;

printf("%d",j);i=3;j=i++;

printf(“%d”,j);4334自增運算符(++)和自減運算符(--),只能用于變量,而不能用于常量或表達式,++和--的優(yōu)先級:第2級。++和--的結(jié)合方向是“自右至左”。5++(a+b)++不合法第51頁/共60頁第53張3.9賦值運算符和賦值表達式

1.賦值運算符賦值運算符就是“=”作用是執(zhí)行一次賦值操作如a=3a=3+c優(yōu)先級:第14級結(jié)合性:右結(jié)合性第52頁/共60頁第54張整型字符型無符號有符號字符的8位放到整型變量的低8位符號擴展高8位補零將低8位放到字符變量中

溫馨提示

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

最新文檔

評論

0/150

提交評論