數(shù)據(jù)類型運算符與表達(dá)式課件_第1頁
數(shù)據(jù)類型運算符與表達(dá)式課件_第2頁
數(shù)據(jù)類型運算符與表達(dá)式課件_第3頁
數(shù)據(jù)類型運算符與表達(dá)式課件_第4頁
數(shù)據(jù)類型運算符與表達(dá)式課件_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第二章第二章 數(shù)據(jù)類型、運算符與表達(dá)式數(shù)據(jù)類型、運算符與表達(dá)式uC C的數(shù)據(jù)類型的數(shù)據(jù)類型u常量常量、另另1 1、另另2 2、字符(串)常量與轉(zhuǎn)義字符字符(串)常量與轉(zhuǎn)義字符u變量與變量與標(biāo)識符標(biāo)識符 變量類型說明符變量類型說明符u類型轉(zhuǎn)換類型轉(zhuǎn)換u運算符運算符 算術(shù)(余)算術(shù)(余) 、關(guān)系、邏輯、關(guān)系、邏輯、賦值賦值、逗號逗號、條件運算條件運算、位運算位運算2二、二、C C的數(shù)據(jù)類型的數(shù)據(jù)類型(一一) 什么是數(shù)據(jù)類型?什么是數(shù)據(jù)類型?(二二) C語言的數(shù)據(jù)類型有哪些?語言的數(shù)據(jù)類型有哪些?3 ( (一一) ) 什么是數(shù)據(jù)類型?什么是數(shù)據(jù)類型?數(shù)據(jù)結(jié)構(gòu)+算法=程序C語言中以語言中以“數(shù)據(jù)類型

2、數(shù)據(jù)類型”形式存形式存在在對數(shù)據(jù)的描述對數(shù)據(jù)的描述對操作的描述對操作的描述4數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型整型整型字符型字符型實型實型(浮點型浮點型)枚舉類型枚舉類型構(gòu)造類型構(gòu)造類型數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類型共用體類型共用體類型指針類型指針類型空類型空類型單精度型單精度型雙精度型雙精度型在程序中對用到的在程序中對用到的所有數(shù)據(jù)都必須指所有數(shù)據(jù)都必須指定其定其數(shù)據(jù)類型數(shù)據(jù)類型.?不同類型的數(shù)據(jù)不同類型的數(shù)據(jù),所占所占內(nèi)存的字節(jié)數(shù)內(nèi)存的字節(jié)數(shù)不同不同, 對對應(yīng)的應(yīng)的操作操作也不相同。也不相同。( (二二) C) C的數(shù)據(jù)類型的數(shù)據(jù)類型5( (一一) ) 常常 量量( (二二) ) 變變

3、 量量三、常量與變量三、常量與變量6概念概念在程序運行過程中,其值不能被改變的量。在程序運行過程中,其值不能被改變的量。分類分類字面常量(字面常量(直接常量直接常量):): 12 -44.6 a Hello! 符號常量:用一個符號常量:用一個標(biāo)識符標(biāo)識符代表一個常量。代表一個常量。 字符串常量字符串常量符號常量符號常量的定義的定義格式:格式:#define 常量名常量名 字面常量字面常量舉例:舉例:#define PRICE 100 #define PI 3.14 #define C1 a習(xí)慣上符號常量名用大寫習(xí)慣上符號常量名用大寫意義意義1、含義清楚,使用的一致性。、含義清楚,使用的一致性。

4、2、在需要改變一個常量時,能夠做到、在需要改變一個常量時,能夠做到“一改全改一改全改”。 符號常量的定義放在符號常量的定義放在函數(shù)外面。函數(shù)外面。( (一一) ) 常量常量7常量常量舉例(求某商品總價)舉例(求某商品總價)#include #define PRICE 100 /定義符號常量void main()int sum;sum=PRICE*20;printf(%dn,sum);單價單價符號常量符號常量數(shù)量數(shù)量直接常量直接常量8概念概念其值可以改變的量稱為變量。其值可以改變的量稱為變量。(二)變量與(二)變量與標(biāo)識符標(biāo)識符要素要素(1)變量名。)變量名。每個變量都必須有每個變量都必須有一個

5、名字一個名字變量名,變量命名遵變量名,變量命名遵循標(biāo)識符命名規(guī)則。循標(biāo)識符命名規(guī)則。(2)變量值。)變量值。在程序運行過程中,在程序運行過程中,變量值存儲在內(nèi)存中。在程序中,變量值存儲在內(nèi)存中。在程序中,通過變量名來引用變量的值。通過變量名來引用變量的值。9標(biāo)識符標(biāo)識符identifier1、標(biāo)識符就是一個名字(如、標(biāo)識符就是一個名字(如常量名、變量常量名、變量名、函數(shù)名名、函數(shù)名)。)。2、組成:只能由、組成:只能由字母、數(shù)字、下劃線字母、數(shù)字、下劃線組成。組成。且第一個字符必須為且第一個字符必須為字母或下劃線字母或下劃線。3、長度:標(biāo)識符的有效長度隨系統(tǒng)而異,、長度:標(biāo)識符的有效長度隨系統(tǒng)

6、而異,如果超長,則超長部分被舍棄。如果超長,則超長部分被舍棄。VC+6.0中規(guī)定最大長度為中規(guī)定最大長度為247個字符。個字符。4、標(biāo)識符命名的良好習(xí)慣、標(biāo)識符命名的良好習(xí)慣見名知意見名知意例如,例如,name(姓名)、(姓名)、age(年齡)(年齡)10下列標(biāo)識符是否合法,為什么?下列標(biāo)識符是否合法,為什么?sum a1 b2 s_name123 #ss a.b.c 1a8bc思思 考考 ?合法合法不合法不合法11變量定義方法:變量定義方法:數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名, 變量名變量名2;int a1,a2;float x1,x2;double y1,y2;char c1,c2;習(xí)慣上,類

7、型名和變量名用小寫字母。習(xí)慣上,類型名和變量名用小寫字母。辨析:逗號與分號的區(qū)別12方式:方式:1、定義變量的同時賦初值(也叫變量初始化)。、定義變量的同時賦初值(也叫變量初始化)。 數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名=初值初值, 變量名變量名2=初值初值2;2、通過一個賦值語句給變量賦、通過一個賦值語句給變量賦(初初)值。值。 變量名變量名=初值初值; 變量賦變量賦(初初)值值出現(xiàn)在函數(shù)體出現(xiàn)在函數(shù)體的的聲明聲明部分部分出現(xiàn)在函數(shù)體出現(xiàn)在函數(shù)體的的執(zhí)行執(zhí)行部分部分int a,b=3;int a,b;b=3;定義兩個變量,一個有初值,一個沒有;定義兩個變量,一個有初值,一個沒有;不是兩個變量的初值

8、都為不是兩個變量的初值都為3; int a=b=3; 是合法的。是合法的。131、程序中用到的變量必須、程序中用到的變量必須“先定義(先定義(declare),后使),后使用用”。2、C語言的語言的關(guān)鍵字關(guān)鍵字不能用作變量名。不能用作變量名。3、C語言對英文字母的語言對英文字母的大小寫敏感大小寫敏感,即同一字母的大,即同一字母的大小寫,被認(rèn)為是兩個不同的字符。小寫,被認(rèn)為是兩個不同的字符。4、定義變量時,給幾個變量賦相同的初值,、定義變量時,給幾個變量賦相同的初值, 應(yīng)寫成應(yīng)寫成 : int a=3,b=3,c=3; 不能寫成不能寫成: int a=b=c=3; 但下面的語句合法:但下面的語句

9、合法: a=b=c=3;5、給變量賦值時,正常情況下應(yīng)給變量賦相同類型的、給變量賦值時,正常情況下應(yīng)給變量賦相同類型的數(shù)據(jù)。若給變量賦與其類型不同的數(shù)據(jù)時,需進(jìn)行數(shù)據(jù)。若給變量賦與其類型不同的數(shù)據(jù)時,需進(jìn)行類類型轉(zhuǎn)換型轉(zhuǎn)換。關(guān)于變量以及變量賦初值的幾點說明關(guān)于變量以及變量賦初值的幾點說明14變量變量舉例舉例include void main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(%d %d %d %f,if,student,age,score);本程序中有本程序中有幾處錯

10、誤?幾處錯誤?undeclared identifier15( (一一) ) 整數(shù)類型整數(shù)類型( (二二) ) 實數(shù)類型實數(shù)類型( (三三) ) 字符類型字符類型( (四四) ) 不同類型數(shù)據(jù)間的轉(zhuǎn)換不同類型數(shù)據(jù)間的轉(zhuǎn)換四、基本數(shù)據(jù)類型四、基本數(shù)據(jù)類型16( (一一) ) 整數(shù)類型整數(shù)類型變量變量分類及取分類及取值范圍值范圍類型類型比特數(shù)比特數(shù)范圍范圍intsigned int 16 -3276832767(215-1)unsigned int 16 065535short int signed short int 16 -3276832767(215-1)unsigned short int

11、 16 065535long intsigned long int 32 -2147483648 2147483647unsigned long int 32 04294967295表示可以省略表示可以省略各類型整型變量各類型整型變量占用的內(nèi)存字節(jié)占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。數(shù),隨系統(tǒng)而異。17表示方法表示方法十進(jìn)制:十進(jìn)制: 123, -456, 0八進(jìn)制:八進(jìn)制: 0123, -0456,十六進(jìn)制:十六進(jìn)制: 0 x123, -0 x456以數(shù)字以數(shù)字0開頭開頭以以0 x開頭開頭整數(shù)類型整數(shù)類型常量常量分類分類基本整型(數(shù)據(jù)范圍與基本整型(數(shù)據(jù)范圍與int型一樣)型一樣)長整型長整型 (

12、在數(shù)值后面加(在數(shù)值后面加“L(l)”, 數(shù)據(jù)范圍與數(shù)據(jù)范圍與long int型一樣)型一樣)如如123l,315L類型匹配類型匹配規(guī)則規(guī)則一個整型常量,可以賦給能容納下其值的整型變量一個整型常量,可以賦給能容納下其值的整型變量18注意:注意: 常量無常量無unsigned型。但一個非負(fù)整型常量,型。但一個非負(fù)整型常量,只要它的值不超過相應(yīng)變量的值域(即取值只要它的值不超過相應(yīng)變量的值域(即取值范圍),也可以賦給范圍),也可以賦給unsigned型變量。型變量。#include void main() long int c,d=9L; unsigned int e=-3 , f; f =5;

13、c=-6; printf(%ldn%ldn%un%u,c,d,e,f);舉例舉例-6942949672935運行結(jié)果運行結(jié)果19整型數(shù)據(jù)在內(nèi)存中是以補碼表示的。整型數(shù)據(jù)在內(nèi)存中是以補碼表示的。(參見教材(參見教材P41)整數(shù)類型整數(shù)類型存儲方式存儲方式編碼編碼正數(shù)表示方法正數(shù)表示方法負(fù)數(shù)表示方法負(fù)數(shù)表示方法原碼原碼最高位為符號位(最高位為符號位(0正數(shù),正數(shù),1負(fù)數(shù))。其他位為負(fù)數(shù))。其他位為此數(shù)絕對值的二進(jìn)制表示。此數(shù)絕對值的二進(jìn)制表示。反碼反碼同原碼同原碼最高位為符號位(最高位為符號位(1),其他位為),其他位為原碼表示的各位取反。原碼表示的各位取反。補碼補碼同原碼同原碼最高位為符號位(最

14、高位為符號位(1),其他位為),其他位為原碼表示的各位取反再末位加原碼表示的各位取反再末位加1。20例如:例如: 求求-10的補碼表示(按的補碼表示(按16位存儲)。位存儲)。-10的原碼的原碼1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0除符號位外除符號位外各位取反各位取反1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1末位加末位加11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0則得到則得到-10的二進(jìn)制補碼的表示。的二進(jìn)制補碼的表示。21整數(shù)類型整數(shù)類型溢出舉例溢出舉例(P44-(P44-例例3.3)3.3)#include void main

15、()int a,b;a=32767;b=a+1;printf(%dn%d,a,b);3278732768運行結(jié)果運行結(jié)果改為改為214748364721474836472147483648運行結(jié)果運行結(jié)果22分類及取分類及取值范圍值范圍 類型類型 比特數(shù)比特數(shù) 有效數(shù)字有效數(shù)字 數(shù)值范圍數(shù)值范圍 float 32 67 10-371038 double 64 1516 10-30710308long double 128 1819 10-4931104932( (二二) ) 實數(shù)類型實數(shù)類型變量變量23表示方法表示方法十進(jìn)制小數(shù)形式:十進(jìn)制小數(shù)形式: 123. 34,-0.0045, 0.0指

16、數(shù)形式:指數(shù)形式: E(e) 如如0.23e2 ,-0.45e-3, 3.0+5規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式數(shù)字和小數(shù)點組成數(shù)字和小數(shù)點組成實數(shù)類型實數(shù)類型常量常量關(guān)于分類關(guān)于分類實型常量不分實型常量不分float型和型和double型。一個實型。一個實型常量,可以賦給一個實型變量(型常量,可以賦給一個實型變量(float型型或或double型)型)。24指數(shù)形式指數(shù)形式(數(shù)符數(shù)符+小數(shù)部分小數(shù)部分+指數(shù)部分指數(shù)部分)小數(shù)部分占的位數(shù)越多小數(shù)部分占的位數(shù)越多,數(shù)的有效數(shù)的有效數(shù)字越多數(shù)字越多,精度越高精度越高.指數(shù)部分占的指數(shù)部分占的位數(shù)越多位數(shù)越多,表示的數(shù)值范圍越大表示的數(shù)值范圍越大.實數(shù)

17、類型實數(shù)類型存儲方式存儲方式實型數(shù)據(jù)在內(nèi)存中是按指數(shù)形式存儲的。(實型數(shù)據(jù)在內(nèi)存中是按指數(shù)形式存儲的。(P46)規(guī)范化指數(shù)形式:小數(shù)規(guī)范化指數(shù)形式:小數(shù)部分采用純小數(shù)形式,部分采用純小數(shù)形式,且最高位不為且最高位不為0。 .314159 1舉例:舉例:3.14159在內(nèi)存中的存放形式為:在內(nèi)存中的存放形式為:25表示方法表示方法用單引號括起來的用單引號括起來的一個字符一個字符. a A 9 = ? 不同的兩個字符不同的兩個字符轉(zhuǎn)義字符轉(zhuǎn)義字符 字符形式字符形式 含義含義 (P48) n 換行換行,從當(dāng)前位置移到下一行開頭從當(dāng)前位置移到下一行開頭 t 水平制表水平制表(跳到下一個跳到下一個tab

18、位置位置) b 退格退格,將當(dāng)前位置移到前一列將當(dāng)前位置移到前一列 r 回車回車,將當(dāng)前位置移到本行開頭將當(dāng)前位置移到本行開頭 單撇號字符單撇號字符 反斜杠字符反斜杠字符 雙撇號字符雙撇號字符 ddd 13位位8進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 xhh 12位位16進(jìn)制數(shù)所代表的字符進(jìn)制數(shù)所代表的字符 (三)(三) 字符類型字符類型常量常量語言還允許使用一種特殊形式的字符常量,就是以語言還允許使用一種特殊形式的字符常量,就是以反斜杠反斜杠 開頭的開頭的轉(zhuǎn)義字符轉(zhuǎn)義字符。將將后面的字符轉(zhuǎn)換后面的字符轉(zhuǎn)換為另外的意義為另外的意義.即是即是一種一種控制符號控制符號.26舉例舉例#include

19、void main() printf(abcbdnxyz); printf(rlmntopqn);abdlmn opq實際中,不會實際中,不會這樣使用!這樣使用!#include void main() printf(x4Fx4Bx21n); /* 等價于等價于printf(OK!n); */ printf(x15 xABn);! 結(jié)果:結(jié)果:結(jié)果:結(jié)果:27字符類型字符類型變量變量存儲方式存儲方式以以ASCII碼存儲碼存儲,占一個字節(jié)(占一個字節(jié)(參見教材參見教材P50)類型及范圍類型及范圍char 大小寫英文字母大小寫英文字母,數(shù)字?jǐn)?shù)字,運算符運算符,標(biāo)點符號等標(biāo)點符號等 注意:注意:字符

20、型數(shù)據(jù)與整型數(shù)據(jù)在存儲方式字符型數(shù)據(jù)與整型數(shù)據(jù)在存儲方式上的相似性使得兩者之間可以通用。但字上的相似性使得兩者之間可以通用。但字符型數(shù)據(jù)的表示范圍是:符型數(shù)據(jù)的表示范圍是:0255。舉例舉例字符變量字符變量ch中存放字符中存放字符a,其,其ASCII碼為碼為97,在內(nèi)存中以二進(jìn)制形式存放,其格式如下:在內(nèi)存中以二進(jìn)制形式存放,其格式如下:0 1 1 0 0 0 0 1ch28例例 字符變量的字符形式輸出和整數(shù)形式輸出字符變量的字符形式輸出和整數(shù)形式輸出。 #include void main() char ch1,ch2; ch1=a; ch2=b; printf(ch1=%c,ch2=%cn

21、,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2); 字符類型字符類型舉例舉例1 1一個字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出一個字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出ch1=a,ch2=bch1=97,ch2=98程序運行結(jié)果:程序運行結(jié)果:29字符類型字符類型舉例舉例2 2允許對字符數(shù)據(jù)進(jìn)行算術(shù)運算,此時就是對它們的允許對字符數(shù)據(jù)進(jìn)行算術(shù)運算,此時就是對它們的ASCII碼值進(jìn)行算術(shù)運算碼值進(jìn)行算術(shù)運算例例字符數(shù)據(jù)的算術(shù)運算(參考教材字符數(shù)據(jù)的算術(shù)運算(參考教材P374的的ASCII碼表)。碼表)。 #include void main

22、() char ch1,ch2; ch1=a; ch2=B; /*字母的大小寫轉(zhuǎn)換字母的大小寫轉(zhuǎn)換*/ printf(ch1=%c,ch2=%cn,ch1-32,ch2+32); /*用字符形式輸出一個大于用字符形式輸出一個大于256的數(shù)值的數(shù)值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a程序運

23、行結(jié)果:程序運行結(jié)果:30概念概念字符串常量字符串常量用一對雙引號用一對雙引號 括起來的若干字符序列括起來的若干字符序列字符串字符串長度長度字符串中字符的個數(shù)。長度為字符串中字符的個數(shù)。長度為0的字符串的字符串(即一個字符都沒有的字符串)稱為空串,(即一個字符都沒有的字符串)稱為空串,表示為表示為 (一對緊連的雙引號)。(一對緊連的雙引號)。存儲方式存儲方式C語言規(guī)定:在存儲字符串常量時,由語言規(guī)定:在存儲字符串常量時,由系統(tǒng)系統(tǒng)在字符串的末尾在字符串的末尾自動自動加一個加一個0作為字符串作為字符串的結(jié)束標(biāo)志。的結(jié)束標(biāo)志。31思考?思考?1、 字符串常量字符串常量How do you do.和

24、和Good morning.的長度分別是多少?的長度分別是多少?2、 字符串字符串C:msdosv6.22和和I say: Goodbye! 在在C語語言中的字符串常量形式如何表示?言中的字符串常量形式如何表示?3、 字符串字符串CHINA在內(nèi)存中的實際存儲形式是怎樣在內(nèi)存中的實際存儲形式是怎樣的?占用多少個字節(jié)的內(nèi)存空間?的?占用多少個字節(jié)的內(nèi)存空間?14和和13C:msdosv6.22和和I say:Goodbye!CHINA0占用字節(jié)占用字節(jié)而非字節(jié)而非字節(jié)內(nèi)存空間內(nèi)存空間32注意:注意:1、a是字符,是字符, a是字符串。是字符串。2、 不能把一個字符串賦給一個字符變不能把一個字符串賦

25、給一個字符變 量。如量。如c=a、c=Hello! 都是錯誤的。都是錯誤的。3、C語言中沒有字符串變量,可以用語言中沒有字符串變量,可以用字符數(shù)組字符數(shù)組來表示。來表示。 ?請看教材請看教材52頁頁33總結(jié)總結(jié): :字符與字符串的區(qū)別有哪些?字符與字符串的區(qū)別有哪些?定界符不同:字符常量使用單引號,而字定界符不同:字符常量使用單引號,而字符串常量使用雙引號;符串常量使用雙引號;長度不同:字符常量的長度固定為長度不同:字符常量的長度固定為1,而字,而字符串常量的長度,可以是符串常量的長度,可以是0,也可以是某個整,也可以是某個整數(shù);數(shù);存儲要求不同:字符常量存儲的是字符的存儲要求不同:字符常量存

26、儲的是字符的ASCII碼值,而字符串常量,除了要存儲有碼值,而字符串常量,除了要存儲有效的字符外,還要存儲一個結(jié)束標(biāo)志效的字符外,還要存儲一個結(jié)束標(biāo)志0。34(四)(四) 不同類型數(shù)據(jù)間的轉(zhuǎn)換不同類型數(shù)據(jù)間的轉(zhuǎn)換(一)(一) 隱式轉(zhuǎn)換(自動轉(zhuǎn)換)隱式轉(zhuǎn)換(自動轉(zhuǎn)換)(二)(二) 顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)35(一)隱式轉(zhuǎn)換(自動轉(zhuǎn)換)(一)隱式轉(zhuǎn)換(自動轉(zhuǎn)換)轉(zhuǎn)換發(fā)生條件轉(zhuǎn)換發(fā)生條件v運算轉(zhuǎn)換運算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運算時不同類型數(shù)據(jù)混合運算時v賦值轉(zhuǎn)換賦值轉(zhuǎn)換-把一個值賦給與其類型不同的把一個值賦給與其類型不同的 變量時變量時v輸出轉(zhuǎn)換輸出轉(zhuǎn)換-輸出時轉(zhuǎn)換成指定的輸出格式輸出

27、時轉(zhuǎn)換成指定的輸出格式v函數(shù)調(diào)用轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換-實參與形參類型不一致時實參與形參類型不一致時 轉(zhuǎn)換轉(zhuǎn)換先轉(zhuǎn)換、后運算先轉(zhuǎn)換、后運算36轉(zhuǎn)換規(guī)則轉(zhuǎn)換規(guī)則doublefloatlongunsignedintchar,short高高低低詳見教材詳見教材54頁頁 1、縱向向上的箭頭表示不同類型的、縱向向上的箭頭表示不同類型的 轉(zhuǎn)換方向(由低類型轉(zhuǎn)化為高類轉(zhuǎn)換方向(由低類型轉(zhuǎn)化為高類 型),不表示轉(zhuǎn)換所經(jīng)的步驟。型),不表示轉(zhuǎn)換所經(jīng)的步驟。 2、橫向向左的箭頭表示必須的轉(zhuǎn)換。、橫向向左的箭頭表示必須的轉(zhuǎn)換。 隱式轉(zhuǎn)換(自動轉(zhuǎn)換)隱式轉(zhuǎn)換(自動轉(zhuǎn)換)說明說明:必定的轉(zhuǎn)換必定的轉(zhuǎn)換運算對象類型運算對象類型

28、不同時轉(zhuǎn)換不同時轉(zhuǎn)換37int i;float f;double d;long e; i=2;f=2.5;d=3.9;e=3; 10+a+i*f-d/e1075.01.3112. 0110. 7intdoubledoubledoubledouble 思考:思考:根據(jù)已知變量定義及賦值語句,根據(jù)已知變量定義及賦值語句,計算以下表達(dá)式的值,并說明每一步所得計算以下表達(dá)式的值,并說明每一步所得結(jié)果的數(shù)據(jù)類型。結(jié)果的數(shù)據(jù)類型。38(二)顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)(二)顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)一般形式一般形式 (要轉(zhuǎn)換成的數(shù)據(jù)類型要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達(dá)式被轉(zhuǎn)換的表達(dá)式)注:當(dāng)被轉(zhuǎn)換的表達(dá)式是一個簡單表

29、達(dá)注:當(dāng)被轉(zhuǎn)換的表達(dá)式是一個簡單表達(dá)式時,外面的一對圓括號可以缺省。式時,外面的一對圓括號可以缺省。舉例舉例 float x,y; x=2.3 ; y=4.5; (int)(x+y) / 6 (int) (int)x+y / 6.5 (double)說明說明強(qiáng)制轉(zhuǎn)換得到的是所需類型的中間變量,強(qiáng)制轉(zhuǎn)換得到的是所需類型的中間變量,原變量或表達(dá)式的類型不變。原變量或表達(dá)式的類型不變。39#include void main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d,x,i);思考:思考:以下程序的輸出結(jié)果是什么?以下程序的輸出結(jié)果是什么

30、?x=3.600000,i=3程序運行結(jié)果:程序運行結(jié)果:結(jié)論:結(jié)論:較高類型較高類型向較低類型轉(zhuǎn)換向較低類型轉(zhuǎn)換時可能發(fā)生時可能發(fā)生精度精度損失問題損失問題40舉例:舉例:已知三角形的邊長已知三角形的邊長a a、b b、c c,求,求三角形周長的一半。三角形周長的一半。#include void main() float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf(s=%8.2f,s);s= 0.00程序運行結(jié)果:程序運行結(jié)果:?s= 6.00程序運行結(jié)果:程序運行結(jié)果:改為:改為:1.0/2 (1/2.0)或或 (float)1/2 (1/(

31、float)2)41(一)(一)C C運算符簡介運算符簡介(二)算術(shù)運算符和算術(shù)表達(dá)式(二)算術(shù)運算符和算術(shù)表達(dá)式(三)賦值運算符和賦值表達(dá)式(三)賦值運算符和賦值表達(dá)式(四)逗號運算符和逗號表達(dá)式(四)逗號運算符和逗號表達(dá)式五、運算符與表達(dá)式五、運算符與表達(dá)式421、算術(shù)運算符算術(shù)運算符 + - * / %2、關(guān)系運算符、關(guān)系運算符 = = != 3、邏輯運算符、邏輯運算符 ! & |4、位運算符位運算符 | &5、賦值運算符賦值運算符 =及其擴(kuò)展賦值運算符及其擴(kuò)展賦值運算符6、條件運算符條件運算符 ? :7、逗號運算符、逗號運算符 ,8、指針運算符、指針運算符 * &

32、;9、求字節(jié)數(shù)運算符求字節(jié)數(shù)運算符 sizeof10、強(qiáng)制類型轉(zhuǎn)換運算符強(qiáng)制類型轉(zhuǎn)換運算符 (類型)類型)11、分量運算符、分量運算符 . 12、下標(biāo)運算符、下標(biāo)運算符 13、其他、其他 如函數(shù)調(diào)用運算符()如函數(shù)調(diào)用運算符()分類分類 運算符運算符 詳見詳見55頁!頁!43 條件表達(dá)式:根據(jù)某個條件決定整個表達(dá)式的值,可通過條件運算符實現(xiàn)。方法如下: (條件表達(dá)式條件表達(dá)式)?表達(dá)式表達(dá)式1:表達(dá)式表達(dá)式2 求某種類型的數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)求某種類型的數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù),可使用運算符可使用運算符 sizeof運算符,用法為: sizeof(變量或表達(dá)式變量或表達(dá)式)兩個特別的運算符

33、44基本算術(shù)運算符基本算術(shù)運算符+ - * / %說明說明 例:例: 5/3=1 -5/3=-1模運算符或求余運算符模運算符或求余運算符算術(shù)表達(dá)式算術(shù)表達(dá)式用算術(shù)運算符和括號將用算術(shù)運算符和括號將運算對象運算對象(也稱操作數(shù))連接起(也稱操作數(shù))連接起來的、符合來的、符合C語法規(guī)則的式子。語法規(guī)則的式子。優(yōu)先級和結(jié)合性優(yōu)先級和結(jié)合性先乘除、后加減,有括號先算括號。先乘除、后加減,有括號先算括號。自左至右自左至右常量、變量、函數(shù)等常量、變量、函數(shù)等說明說明如果一個運算符兩側(cè)的數(shù)據(jù)類型不同,先自動進(jìn)行如果一個運算符兩側(cè)的數(shù)據(jù)類型不同,先自動進(jìn)行類型轉(zhuǎn)換類型轉(zhuǎn)換,使二者具有同一類型,然后進(jìn)行運算。,

34、使二者具有同一類型,然后進(jìn)行運算。 兩個整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。兩個整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。當(dāng)商為負(fù)數(shù)時,多采用當(dāng)商為負(fù)數(shù)時,多采用“向零取整向零取整”的方法。的方法。求余運算的兩側(cè)均應(yīng)為整數(shù)求余運算的兩側(cè)均應(yīng)為整數(shù) 例:例:5%3=2例:例: a*b/c-1.5+a 45自增、自減自增、自減運算符運算符作用:自增運算符()使單個變量的值增作用:自增運算符()使單個變量的值增1; 自減運算符()使單個變量的值減自減運算符()使單個變量的值減1。例例i=3;A) j=+i;j=i+;B)j=-i+;i=i+1i=i-1? j,i A) j=4 i=4j=3 i=4B)j=

35、-3格式:格式: 前置:前置:+i , -i (在使用(在使用i之前,使之前,使i的值加(減)的值加(減)1) 后置:后置:i+ , i- (在使用(在使用i之后,使之后,使i的值加(減)的值加(減)1)+和和-結(jié)合方向結(jié)合方向是是“自右至左自右至左”46例例i=3;A) c=(i+)+(i+);B) a=i+; b=i+; c=a+b;? c, i A) c=6 i=5B) c=7 i=5兩處兩處i值都為值都為3例例i=3; j=4;i+j (i+)+j? i, j i=4 j=4表達(dá)式的值:表達(dá)式的值:7自左而右組合自左而右組合例例i=3; printf(“%d,%d”,i,i+)? 4,

36、 3函數(shù)參數(shù)自右至左求值函數(shù)參數(shù)自右至左求值47(1) 自增、自減運算是語言特有的,常用于循環(huán)語句中,使循環(huán)控自增、自減運算是語言特有的,常用于循環(huán)語句中,使循環(huán)控 制變量加(或減),以及指針變量中,使指針指向下(或上)一個制變量加(或減),以及指針變量中,使指針指向下(或上)一個地址。地址。(2) 自增、自減運算符,不能用于常量和表達(dá)式。自增、自減運算符,不能用于常量和表達(dá)式。例如,例如,5+、-(a+b)等都是非法的。等都是非法的。(3) +和和-的結(jié)合方向為自右至左。(的結(jié)合方向為自右至左。(P57)(4) 如果對一個變量的自增自減運算,單獨構(gòu)成語句,而不是作為如果對一個變量的自增自減運

37、算,單獨構(gòu)成語句,而不是作為表達(dá)式的一部分時,前置和后置運算效果一樣,都是使變量自加。表達(dá)式的一部分時,前置和后置運算效果一樣,都是使變量自加。如如i+;和和 +i;是一樣的,都是使是一樣的,都是使i加。加。(5) 在表達(dá)式中,連續(xù)使用同一變量進(jìn)行自增或自減運算時,很容易在表達(dá)式中,連續(xù)使用同一變量進(jìn)行自增或自減運算時,很容易出錯,所以最好避免這種用法。出錯,所以最好避免這種用法。說明說明48賦值運算符賦值運算符簡單賦值運算符:簡單賦值運算符:=復(fù)合賦值運算符:復(fù)合賦值運算符:+=, -=,*=,/=,%= 簡單賦值運算符的一般形式為簡單賦值運算符的一般形式為: 變量變量 = 表達(dá)式表達(dá)式它的作用是將一個表達(dá)式的值賦給一個變量。它的作用是將一個表達(dá)式的值賦給一個變量。 復(fù)合賦值運算的一般格式為:復(fù)合賦值運算的一般格式為: 變量變量 雙目運算符雙目運算符 = 表達(dá)式表達(dá)式 復(fù)合賦值運算符復(fù)合賦值運算符

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論