Chapter2數據類型_第1頁
Chapter2數據類型_第2頁
Chapter2數據類型_第3頁
Chapter2數據類型_第4頁
Chapter2數據類型_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第2 2章章 基本數據類型、運算符及表達式基本數據類型、運算符及表達式2.1 的基本數據類型的基本數據類型數數據據類類型型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型 void數值類型數值類型字符類型字符類型 char枚舉類型枚舉類型 enum整整 型型浮點型浮點型單精度型單精度型 float雙精度型雙精度型 double短整型短整型 short長整型長整型 long整型整型 int數組類型數組類型結構體類型結構體類型 struct共用體類型共用體類型 union2.2 常量與變量常量與變量常量常量程序運行的過程中,值不能被改變的量。程序運行的過程中,值不能被改變的量。含義:

2、含義:分類:分類:字面常量和符號常量。字面常量和符號常量。其中,字面常量又分為:其中,字面常量又分為:整型常量、實型常量、整型常量、實型常量、字符型常量(字符常量和字符串常量)字符型常量(字符常量和字符串常量)字面常量字面常量 整型常量整型常量形式:形式:(1 1)十進制整型常量:)十進制整型常量: 由由0 0至至9 9的數字組成,沒有前綴,不能以的數字組成,沒有前綴,不能以0 0起頭。起頭。(2 2)八進制整型常量:)八進制整型常量: 以以0 0(數字(數字0 0)為前綴,其后由)為前綴,其后由0 0到到7 7的數字組成,的數字組成, 沒有小數部分。沒有小數部分。 (3 3)十六進制整型常量

3、:)十六進制整型常量: 以以0 0 x x或或0 0X X為前綴,其后由為前綴,其后由0 0到到9 9的數字和的數字和A A到到F F (大小寫均可)字母組成,沒有小數部分大小寫均可)字母組成,沒有小數部分整型常量中的長整型數據可用整型常量中的長整型數據可用L L(或小寫字母或小寫字母l l)作后綴表示。作后綴表示。十進制十進制、八進制八進制和和十六進制十六進制3種形式種形式字面常量字面常量 實型常量實型常量構成:構成: 由整數部分和小數部分組成的,只有由整數部分和小數部分組成的,只有十進制十進制方式方式。形式:形式:(1)定點數形式定點數形式:它由數字和小數點組成。整數和小數部分可以省它由數

4、字和小數點組成。整數和小數部分可以省去一個,但不可兩者都省,而且小數點不能省。去一個,但不可兩者都省,而且小數點不能省。如:如:1.234,.123,123.,0.0等。等。(2)指數形式指數形式(或稱科學表示法或稱科學表示法):它是用整數或定點數后加它是用整數或定點數后加e(或或E)和指數來表示和指數來表示; 指數可正可負必須為整數指數可正可負必須為整數, 字母字母e之前必須有數字。之前必須有數字。如如: 1.234e3, 12.34e2 均合法表示均合法表示 1.234* *103;而而 e3,1e2.3,.e3,e 均不合法。均不合法。實型常量的后綴用實型常量的后綴用F/f 表示表示單精

5、度型單精度型。用。用L/l表示表示長雙精度型長雙精度型。例:例:下列四個選項中,均是合法的實型常量的是下列四個選項中,均是合法的實型常量的是 A、+2e-1 -3e4.5 5e3 B、-.91 .2e-0 -7.e8 C、123e+1 4567 +2e-1 D、8e-4 -5e+2 -e3B字面常量字面常量 字符型常量字符型常量分類分類:字符常量和字符串常量兩類。字符常量和字符串常量兩類。1. 1. 字符常量:字符常量:用一對用一對單引號單引號括起來的一個字符。括起來的一個字符。如:如:a a、A A、3 3、? ?等。等。特殊的特殊的轉義字符常量轉義字符常量:是將反斜扛是將反斜扛( )后面的

6、字符轉換成另外的意思。后面的字符轉換成另外的意思。 = = = = != = (3) (3) 邏輯運算符邏輯運算符 ! & | ! & | (4) (4) 位運算符位運算符 & & (5) (5) 賦值運算符賦值運算符 = = 復合賦值運算符復合賦值運算符 (6) (6) 條件運算符條件運算符 ? : ? : (7) (7) 逗號運算符逗號運算符 , (8) (8) 指針運算符指針運算符 * * 和和 & & (9) (9) 求字節數運算符求字節數運算符 sizeofsizeof (10) (10)強制類型轉換運算符強制類型轉換運算符 (類型標識

7、符)(類型標識符) (11) (11)分量運算符分量運算符 (12) (12)下標運算符下標運算符 (13) (13)其它其它 函數名函數名( )( )2. 2. 運算符按其連接運算對象的個數可分為:運算符按其連接運算對象的個數可分為:(1 1)單目運算符(僅對一個運算對象進行操作)單目運算符(僅對一個運算對象進行操作) ! + - - + - -(取負號)(取負號) (類型標識符)(類型標識符) * * & & sizeofsizeof(2 2)雙目運算符(該運算符連接兩個運算對象)雙目運算符(該運算符連接兩個運算對象) + - + - * * / % = = != / %

8、= = != & | & | & | & | = = 復合賦值運算符復合賦值運算符(3 3)三目運算符(該運算符連接三個運算對象)三目運算符(該運算符連接三個運算對象) ? :(4 4)其它)其它 ( ) ( ) - -3. 3. 按優先級及結合性按優先級及結合性優先級:優先級:標志運算符在表達式中的運算順序。標志運算符在表達式中的運算順序。結合性:結合性:優先級相同時,按優先級相同時,按從左到右從左到右或或從右到左從右到左的的結合順序確定運算符的計算順序。結合順序確定運算符的計算順序。分為二類:分為二類:(1 1)從右到左:從右到左:單目、三目和賦值運算符單目

9、、三目和賦值運算符(2 2)從左到右:從左到右:其它運算符其它運算符算術運算符與算術表達式算術運算符與算術表達式1. 1. 算術運算符算術運算符單目運算符:單目運算符:- -( (取負取負) )、+ +( (取正取正) )雙目算術運算符:雙目算術運算符:+ +( (加加) )、- -( (減減) )、* *( (乘乘) )、/ /( (除除) )、% %( (余數余數) )說明:說明:1、整數相除結果為整數,即只取商的整數部分;、整數相除結果為整數,即只取商的整數部分;2、%只適合整數運算只適合整數運算自增與自減運算符(自增與自減運算符( + + 與與 - - )說明:說明:單目運算符,操作對

10、象只有一個且只能是單個變量。單目運算符,操作對象只有一個且只能是單個變量。功能:功能:(1 1)取由該運算符構成的表達式的值)取由該運算符構成的表達式的值(2 2)實現變量)實現變量( (即運算對象即運算對象) )自身的加自身的加1 1或減或減1 1運算。運算。方式:方式:前綴方式:前綴方式:運算符在變量的前面運算符在變量的前面, ,如如+a a或或- - -a a 先自增先自增/ /自減,再引用;自減,再引用;后綴方式:后綴方式:運算符在變量的后面運算符在變量的后面, ,如如a+ a+ 或或a- -a- - 先引用,再自增先引用,再自增/ /自減。自減。例:例:main() int a=3;

11、 int b=+a,c; printf(%d,%dn,a,b); c=a+; printf(%d,%dn,a,c); 4 ,4 5 ,4#include main( ) char c1=A,c2,c3; int i=5,j,k; c2=c1+; c3=+c1; j=i-; k=-i; printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3); printf(i=%d,j=%d,k=%dn,i,j,k);c1=C, c2=A, c3=Cc1=C, c2=A, c3=Ci=3, j=5, k=3 i=3, j=5, k=3 例:例:說明:說明:1.+ 和和 - 的運算對象只能是變量(

12、或運的運算對象只能是變量(或運算結果是變量的表達式)算結果是變量的表達式), 不能是常量或不能是常量或運算結果是數值的表達式運算結果是數值的表達式。 例如:例如: 5+、(a+2)+ 不合法。不合法。 2.具有具有右結合性右結合性,結合方向為從右到左。,結合方向為從右到左。 例如:例如: a+ 等價于等價于 -(a+) 3.在有在有+ 和和 的表達式中,盡量不要使的表達式中,盡量不要使用難于理解和容易出錯的表達方式,尤其用難于理解和容易出錯的表達方式,尤其是具有二義性的表達式。是具有二義性的表達式。int i=3; m=(i+)+(i+)+(i+);int i=3; a=i+; b=i+c=i

13、+;c=a+b+c;()2 2、算術表達式、算術表達式用算術運算符將運算對象連接起來,符合用算術運算符將運算對象連接起來,符合語法規則,并能說明運算過程的式子。語法規則,并能說明運算過程的式子。賦值運算符與賦值表達式賦值運算符與賦值表達式賦值運算符:賦值運算符: = =一般形式:一般形式: 變量變量 = = 表達式表達式含義:含義:將賦值號將賦值號右邊表達式右邊表達式的值的值賦給賦給左邊的變量左邊的變量。如如: x=3; y=(x+2)x=3; y=(x+2)* *3;3;注意:注意:(1)(1)先計算賦值運算符右側表達式先計算賦值運算符右側表達式, ,再賦值。再賦值。(2)(2)賦值運算符的

14、左側必須是一個變量。賦值運算符的左側必須是一個變量。如: 3 3= =x; x; (x+y)(x+y)= 5;= 5; /* 都錯誤 */復合賦值運算符復合賦值運算符一般形式:一般形式:變量變量 = = 變量變量 運算符運算符 表達式表達式 ; ;縮寫式:縮寫式:變量變量 運算符運算符 = = 表達式表達式; ; 如如: :x = x + y;x = x + y;x += y;x += y;x = x x = x * * (y + z); (y + z);x x * *= y + z;= y + z; 復合賦值運算符共有復合賦值運算符共有1010種:種: += +=(加賦值)(加賦值) -=

15、-=(減賦值)(減賦值) * *= =(乘賦值)(乘賦值) /= /=(除賦值)(除賦值) %= %=(求余賦值)(求余賦值) &= &=(位與賦值)(位與賦值) |= |=(按位或賦值)(按位或賦值) = =(按位異或賦值)(按位異或賦值) = = =(右移位賦值)(右移位賦值)例:例: # include main( ) int a; float b; a*=a/=(a=7)-(b=4.5); printf(a=%d, b=%fn,a, b);a=4,b=4.500000例例: int m=7,n=12; 則能得到值為則能得到值為3的表達式是的表達式是_ A. n%=(m%

16、=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) D逗號運算符和逗號表達式逗號運算符和逗號表達式一般形式一般形式:表達式表達式1,表達式表達式2,表達式表達式n例例:z=(y=(x=4*5,x*5),x+25) x=20, y=100, z=45綜合例題綜合例題:int k=7;float a=2.5,b=4.7;則表達式則表達式 a+k%3*(int)(a+b)%2/4的值的值_A. 2.5 B. 2.75 C. 3.5 D. 0.0 A各類數值型數據間的混合運算與類型轉換各類數值型數據間的混合運算與類型轉換語言規定:語言規定:相同類型相同類型數據

17、直接進行運算數據直接進行運算, ,運算結果是原數據類型運算結果是原數據類型;不同類型不同類型的數據的數據先轉換成同一類型先轉換成同一類型,然后才可進行運算然后才可進行運算。兩種轉換形式:兩種轉換形式:(1)(1)隱含轉換隱含轉換( (隱式轉換隱式轉換) );(2)(2)強制轉換強制轉換( (顯式轉換)顯式轉換)隱含轉換隱含轉換1 1、運算轉換運算轉換不同類型數據混合運算時不同類型數據混合運算時2 2、賦值轉換賦值轉換把一個值賦給與其類型不同的變量時把一個值賦給與其類型不同的變量時3 3、輸出轉換輸出轉換輸出時轉換成指定的輸出格式輸出時轉換成指定的輸出格式4 4、函數調用轉換函數調用轉換實參與形

18、參類型不一致時轉換實參與形參類型不一致時轉換由語言系統自動完成的由語言系統自動完成的doublefloatlongunsignedintchar,short低低高高轉換規則:轉換規則:注意:注意:(1) (1) 轉換按箭頭方向不是逐步進行轉換按箭頭方向不是逐步進行, , 而是一步到位。而是一步到位。(2) (2) 類型轉換只影響表達式結果類型轉換只影響表達式結果, ,不改變原變量的類型。不改變原變量的類型。例例 char ch; int i; float f; double d;ch / i + f * * d - ( f + i )intdoubledoubledoubledouble例例:以下表達式結果為整數的是以下表達式結果為整數的是_ (設設int i;char c;float f;) A. i+f B. i*c C. c+f D. i+c+fB 強制轉換強制轉換通過強制類型轉換運算符將表達式值轉換為指定類型。通過強制類型轉換運算符將表達式值轉換為指定類型。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論