c語言程序設(shè)計課件:第三章表達式_第1頁
c語言程序設(shè)計課件:第三章表達式_第2頁
c語言程序設(shè)計課件:第三章表達式_第3頁
c語言程序設(shè)計課件:第三章表達式_第4頁
c語言程序設(shè)計課件:第三章表達式_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第三章第三章 表達式表達式 3.1 C 3.1 C 的數(shù)據(jù)類型的數(shù)據(jù)類型基本類型 (整型、實型實型、字符型字符型、枚舉型)枚舉型)構(gòu)造類型 (略)指針類型 (略) 空類型 各類型包含常量常量與與變量變量 3.2 3.2 常量與變量常量與變量 常量與符號常量常量與符號常量 常量常量 在程序運行過程中其值保持不變的量。在程序運行過程中其值保持不變的量。 符號常量符號常量 用來代表一個常量的標識符。 #define PI 3.1415926#define PI 3.1415926 例:例: #define #define PIPI 3.1415926 3.1415926 main() main()

2、 float float r r=2,=2,c c; ; c c=2=2* *PIPI* *r r; ; printf(“%f”, printf(“%f”,c c);); 變量變量 其值可以改變的量。其值可以改變的量。 變量的三要素變量的三要素: : 變量名變量名每個變量有一個名字,作為識別該變量的每個變量有一個名字,作為識別該變量的標識符。標識符。 變量的值變量的值 每個變量有一個值,變量的值是隨時每個變量有一個值,變量的值是隨時可以改變的??梢愿淖兊?。 變量的存儲單元變量的存儲單元 每個變量占據(jù)一個內(nèi)存單元,用于存放變量每個變量占據(jù)一個內(nèi)存單元,用于存放變量的值的值。 變量名 a 變量值

3、存儲單元3 變量的命名規(guī)則:變量的命名規(guī)則: 由字母、數(shù)字和下劃線組成由字母、數(shù)字和下劃線組成 以字母或下劃線開頭以字母或下劃線開頭 a a、x1x1、y_2y_2、_b1_b1、_1c _1c 合法合法 1x1x、a+2a+2、 不合法不合法 變量必須先定義后使用。變量必須先定義后使用。 程序中何時使用常量?何時使用變量?程序中何時使用常量?何時使用變量? 3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù) 整型常量整型常量 即整常數(shù),即整常數(shù),c c的整常數(shù)有三種形式:的整常數(shù)有三種形式: 十進制整數(shù)十進制整數(shù) 與數(shù)學(xué)中的整數(shù)一致,如:與數(shù)學(xué)中的整數(shù)一致,如:100100,123123,1515等。等。 八

4、進制整數(shù)八進制整數(shù) 以以0 0開頭的整數(shù),如:開頭的整數(shù),如:010,07,020010,07,020等。等。 十六進制整數(shù)十六進制整數(shù) 以以0 x0 x開頭的整數(shù),如:開頭的整數(shù),如:0 x10,0 xff,0 x2a0 x10,0 xff,0 x2a等。等。 整型變量整型變量 用于存放整數(shù)的變量。用于存放整數(shù)的變量。 分分4 4種類型:種類型: 基本型:基本型:intint a a 16 16位,可表示的數(shù)值范圍:位,可表示的數(shù)值范圍:-32768-327683276732767 短整型:短整型:short intshort int b b 16 16位,可表示的數(shù)值范圍:位,可表示的數(shù)值

5、范圍:-32768-327683276732767 長整型:長整型:long intlong int c c 32 32位,數(shù)值范圍:位,數(shù)值范圍:-2147483648-214748364821474836472147483647 無符號型:加上無符號型:加上 unsignedunsigned 只存放正數(shù)。只存放正數(shù)。 如:如:unsigned intunsigned int x x 變量變量x x為無符號整數(shù),為無符號整數(shù),1616位全表示數(shù)碼,位全表示數(shù)碼, 數(shù)值范圍:數(shù)值范圍:0 06553565535 在程序設(shè)計中,如果要使用整型變在程序設(shè)計中,如果要使用整型變量,必須首先選擇以上類

6、型符來定義變量,量,必須首先選擇以上類型符來定義變量,然后才能使用;然后才能使用; 例:例: main() main() 定義定義 int int a,b,c; a,b,c; a=100; b=50; a=100; b=50; 使用使用 c=a+b;c=a+b; printf(“%d”,c printf(“%d”,c);); 一般根據(jù)什么原則選擇變量的類型?一般根據(jù)什么原則選擇變量的類型? 3.4 3.4 實型數(shù)據(jù)實型數(shù)據(jù) 實型常量實型常量 可使用兩種形式表示:可使用兩種形式表示: 小數(shù)形式:小數(shù)形式:如如 1.23, 3.1415926 15.481.23, 3.1415926 15.48

7、指數(shù)形式:指數(shù)形式:如如 1e-20 1.23e5 1e-20 1.23e5 實型變量實型變量 用于存放實數(shù)的變量用于存放實數(shù)的變量 分單精度和雙精度兩種:分單精度和雙精度兩種: float a,bfloat a,b 定義定義a a和和b b為單精度型變量為單精度型變量 3232位,位,7 7位有效數(shù)字,位有效數(shù)字,1010-38-3810103838 double x,ydouble x,y 定義定義x x和和y y為雙精度型變量為雙精度型變量 6464位,位,1515位有效數(shù)字,位有效數(shù)字,1010-308-3081010308308 例:例: main()main() float r,c

8、; float r,c; double r,c;double r,c; r=5; r=5; c=2 c=2* *3.14159263.1415926* *r;r; printf(“%f”,c printf(“%f”,c); ); 3.5 3.5 字符型數(shù)據(jù)字符型數(shù)據(jù) 字符常量字符常量 用單引號括起來的一個字符。用單引號括起來的一個字符。 a,x,a,x,* *,1,1等等 除 此 外 , 以除 此 外 , 以 開 頭 的 字 符開 頭 的 字 符如如n,tn,t等等 稱為轉(zhuǎn)義字符,祥見書表稱為轉(zhuǎn)義字符,祥見書表3.33.3 字符型變量字符型變量 用于存放字符的變量。用于存放字符的變量。 cha

9、r c1,c2; char c1,c2; 定義定義c1c1和和c2c2為字符型變量為字符型變量 c1=a; c2=b; c1=a; c2=b; 字符賦值字符賦值 字符型變量存放一個字符,占據(jù)一個字節(jié)字符型變量存放一個字符,占據(jù)一個字節(jié) 字符型數(shù)據(jù)的存儲形式字符型數(shù)據(jù)的存儲形式 存放ASCII碼 不是 而是 如字符如字符aa在內(nèi)存中存放在內(nèi)存中存放9797,b b 存放存放9898。 與整數(shù)的存儲形式一致,它們之間可以通與整數(shù)的存儲形式一致,它們之間可以通用用 一個字符數(shù)據(jù)既可以作字符用,也可以作一個字符數(shù)據(jù)既可以作字符用,也可以作整數(shù)用(取其整數(shù)用(取其ASCIIASCII代碼)。代碼)。 如

10、:如:32+a32+a相當于相當于 32+9732+97 若若 intint x; char c; x; char c;則則 x=a; c=97; x=97; c=a; x=a; c=97; x=97; c=a; 都允都允許許 a97 字符串常量字符串常量 用雙引號括起來的字符序列。用雙引號括起來的字符序列。 如:如:”abcde”abcde”, ,”china”china” ” ”a a”也屬字符串。也屬字符串。 注意注意”a”a”與與aa的區(qū)別。的區(qū)別。 對于:對于: char c; char c; c=”a”; c=”a”; 用法錯誤用法錯誤 字符串中每個字符各占一個字節(jié),并且在字符串中

11、每個字符各占一個字節(jié),并且在字符串結(jié)尾加上一個結(jié)束標記字符串結(jié)尾加上一個結(jié)束標記00 如:如:”china”china” 在內(nèi)存中占在內(nèi)存中占6 6個字節(jié)。個字節(jié)。 c h i n a 0 C C語言中專門的字符串變量,可用字符數(shù)語言中專門的字符串變量,可用字符數(shù)組存放(以后介紹)。組存放(以后介紹)。 3.6 3.6 變量賦初值變量賦初值 在定義變量的同時給相應(yīng)的變量賦初值。在定義變量的同時給相應(yīng)的變量賦初值。 如:如: intint a=3; a=3; a a float b=5.2;float b=5.2; char c=a; char c=a; int int x=y=z=6; x=y

12、=z=6; 效果:效果: 在給變量分配內(nèi)存單元的同時在相應(yīng)的單在給變量分配內(nèi)存單元的同時在相應(yīng)的單 元中存放初值。元中存放初值。 3 3.7 3.7 各數(shù)值型數(shù)據(jù)間的混合運算各數(shù)值型數(shù)據(jù)間的混合運算 整型、實型、字符型數(shù)據(jù)間可以進行混合運整型、實型、字符型數(shù)據(jù)間可以進行混合運算,如:算,如: 10-a10-a* *1.51.5 運算時,參加運算的兩個數(shù)據(jù)如果類型不同,運算時,參加運算的兩個數(shù)據(jù)如果類型不同,則首先將其類型轉(zhuǎn)換成一致再運算,轉(zhuǎn)換規(guī)則則首先將其類型轉(zhuǎn)換成一致再運算,轉(zhuǎn)換規(guī)則是:是: 將優(yōu)先級低的類型轉(zhuǎn)換到優(yōu)先級高的類型將優(yōu)先級低的類型轉(zhuǎn)換到優(yōu)先級高的類型 數(shù)據(jù)類型的優(yōu)先級:數(shù)據(jù)類型

13、的優(yōu)先級: 高高 double floatdouble float long long unsigned unsigned 低低 intint char char 3.8 3.8 算術(shù)運算符與算術(shù)表達式算術(shù)運算符與算術(shù)表達式 基本的算術(shù)運算符基本的算術(shù)運算符 + - * / % 算術(shù)表達式算術(shù)表達式 用算術(shù)運算符將運算對象連接起來的式子用算術(shù)運算符將運算對象連接起來的式子 用于表達數(shù)學(xué)公式的式子用于表達數(shù)學(xué)公式的式子 如:如:2 2* *x+y-1/ax+y-1/a 表達式經(jīng)過運算最終得到一個值:表達式經(jīng)過運算最終得到一個值: 算術(shù)表達式的值算術(shù)表達式的值 運算符的優(yōu)先級與結(jié)合性運算符的優(yōu)先級

14、與結(jié)合性 優(yōu)先級:優(yōu)先級: 在對表達式求值時,如果存在多個運算符,則在對表達式求值時,如果存在多個運算符,則運算的先后次序按運算符的優(yōu)先級別從高到底進運算的先后次序按運算符的優(yōu)先級別從高到底進行。行。 運算符的優(yōu)先級關(guān)系為:運算符的優(yōu)先級關(guān)系為: 高:高:* * / %/ % 低:低:+ -+ - 如:如:a-2a-2* *x x 先算先算 * * 2 2* *(a+2) (a+2) 有括號的情況?有括號的情況? 結(jié)合性:結(jié)合性: 如果在一個運算對象兩邊的運算符的優(yōu)先級相如果在一個運算對象兩邊的運算符的優(yōu)先級相同,則按規(guī)定的同,則按規(guī)定的“結(jié)合方向結(jié)合方向”處理。處理。 如:如:a-b+ca-

15、b+c b b與與- -結(jié)合是從左到右,稱結(jié)合是從左到右,稱“左結(jié)合性左結(jié)合性”。 b b與與+ +結(jié)合是從右到左,稱結(jié)合是從右到左,稱“右結(jié)合性右結(jié)合性”。 每個運算符都有相應(yīng)的優(yōu)先級和結(jié)合性。每個運算符都有相應(yīng)的優(yōu)先級和結(jié)合性。 基本算術(shù)運算符都是基本算術(shù)運算符都是左結(jié)合性左結(jié)合性。 計算表達式例:計算表達式例: 2+A-1/2.0 1+3/2-12+A-1/2.0 1+3/2-1構(gòu)造表達式例構(gòu)造表達式例 2x2x2 2+3x-1+3x-1 a+b a-b a+b a-b x+y x-ya+b/a-b ?(a+b)/(a-b)2*x*x+3*x-1 (*不能?。?a+b)/(a-b)/(x

16、+y)/(x-y)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)*(x-y) 強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換可以用強制類型轉(zhuǎn)換運算符將一個表達式可以用強制類型轉(zhuǎn)換運算符將一個表達式的值轉(zhuǎn)換成所需類型:的值轉(zhuǎn)換成所需類型:如:如: (int)(x+y(int)(x+y) ) (float)7/3 (float)7/3 應(yīng)用舉例:應(yīng)用舉例: intint a=200,b=300,c; a=200,b=300,c; c=a c=a* *b/100; b/100; ? ? 可知,有自動轉(zhuǎn)換和強制轉(zhuǎn)換,可知,有自動轉(zhuǎn)換和強制轉(zhuǎn)換, 當自動轉(zhuǎn)換達不到目的時,可用強制轉(zhuǎn)換。當自動

17、轉(zhuǎn)換達不到目的時,可用強制轉(zhuǎn)換。c=(long)a*b/100;c=(long)(a*b)/100; 自增、自減運算符自增、自減運算符 自增運算符:自增運算符:+ 使變量值加使變量值加1 1 自減運算符:自減運算符:- 使變量值減使變量值減1 1 兩種用法:兩種用法: +i, -i +i, -i 先加(減)后用先加(減)后用 i+, i- i+, i- 先用后加(減)先用后加(減) 兩種用法對兩種用法對i i效果一樣,但表達式的值不同。效果一樣,但表達式的值不同。例例:假設(shè):假設(shè)i i的原值為的原值為5 5: j=+i; j=?j=+i; j=? j=i+; j=?j=i+; j=? 注意:注

18、意:+和和-只能用于變量。只能用于變量。 如:如:3+3+和(和(a+1a+1)+ 不合法不合法+和和-為右結(jié)合性。為右結(jié)合性。 (-i)+(-i)+ -i+-i+ -(i+)-(i+) 若若i i的原值是的原值是5 5,則該表達式的值是多少?,則該表達式的值是多少? 例:分析執(zhí)行下列語句后的結(jié)果:例:分析執(zhí)行下列語句后的結(jié)果: a=5; a=5; a b c da b c d b=a+;b=a+; c=-a-b+; c=-a-b+; d=(a+)-(+b)+c-; d=(a+)-(+b)+c-;556 506 7-26-1 兩種特殊情況:兩種特殊情況: k=(i+)+(i+)+(i+) k=

19、(i+)+(i+)+(i+) i+j i+j 是是 i+(+j)i+(+j) 還是還是 (i+)+j(i+)+j ? ? i+ i+雖然與雖然與i=i+1i=i+1等效,但使用自增自減等效,但使用自增自減運算符的代碼優(yōu)化程度好,因而經(jīng)常使用;運算符的代碼優(yōu)化程度好,因而經(jīng)常使用;但用時需特別小心。但用時需特別小心。 3.9 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式 賦值運算符賦值運算符 “=”=”稱賦值運算符,其作用是將一個數(shù)據(jù)稱賦值運算符,其作用是將一個數(shù)據(jù)賦給一個變量。賦給一個變量。 如:如: a=5a=5 不要理解為不要理解為“等號等號”。 執(zhí)行賦值運算的結(jié)果,是將右邊的數(shù)據(jù)

20、存執(zhí)行賦值運算的結(jié)果,是將右邊的數(shù)據(jù)存入左邊變量所對應(yīng)的內(nèi)存單元中。入左邊變量所對應(yīng)的內(nèi)存單元中。 賦值規(guī)則賦值規(guī)則 如果賦值運算符兩側(cè)的類型不一致,則在賦如果賦值運算符兩側(cè)的類型不一致,則在賦值時要進行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為:值時要進行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為: 實型實型整變量整變量 舍去小數(shù)部分。舍去小數(shù)部分。 intint a=5.5; a a=5.5; a中為中為5 5。 整型整型實變量實變量 數(shù)值不變,以浮點形式存儲。數(shù)值不變,以浮點形式存儲。 字符型字符型整變量整變量 放在整形變量低放在整形變量低8 8位。保持原值不變原則。位。保持原值不變原則。 intint a=A; a=A; 復(fù)合賦

21、值運算符復(fù)合賦值運算符 在賦值運算符前加上其它運算符,可以構(gòu)成在賦值運算符前加上其它運算符,可以構(gòu)成復(fù)合賦值運算符。復(fù)合賦值運算符。 a+=3 a+=3 a=a+3 a=a+3 b-=x+5 b-=x+5 b=b-(x+5) b=b-(x+5) x x* *=c-6 =c-6 x=x x=x* *(c-6)(c-6) y/=a y/=a* *4 4 y=y/(a y=y/(a* *4)4) k%=b-2 k%=b-2 k=k%(b-2) k=k%(b-2) 屬于高效率運算符。屬于高效率運算符。 賦值表達式賦值表達式 主要實現(xiàn)賦值運算的表達式。主要實現(xiàn)賦值運算的表達式。 一般形式:一般形式: =

22、 如:如: a=5 y=2a=5 y=2* *x+3 a=a+1x+3 a=a+1 不是衡等不是衡等作用:作用:將右邊表達式的值賦給左邊的變量將右邊表達式的值賦給左邊的變量。 賦值表達式的值取左邊變量的值。賦值表達式的值取左邊變量的值。 賦值表達式右邊的賦值表達式右邊的 可以是任何表可以是任何表達式,如:達式,如: a=(b=5) a=(b=5) 賦值表達式中包含賦值表達式賦值表達式中包含賦值表達式 賦值運算符的優(yōu)先級低于所有算術(shù)運算符,賦值運算符的優(yōu)先級低于所有算術(shù)運算符,且是右結(jié)合性。且是右結(jié)合性。 a=(b=5)a=(b=5) 與與 a=b=5a=b=5 等效。等效。 例:計算以下表達式的值:例:計算以下表達式的值: a=b=c=5a=b=c=5 a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=4.5)+(c=6.5) a=(b=4.5)+(c=6.5) (a a、b b、c c為整型變量)為整型變量) a+=a-=aa+=a-=a* *a a (

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論