C語言程序設計基礎3_第1頁
C語言程序設計基礎3_第2頁
C語言程序設計基礎3_第3頁
C語言程序設計基礎3_第4頁
C語言程序設計基礎3_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、共 57 頁 第 1 1 頁數據類型、運算符與表達式共 57 頁 第 2 2 頁l 數據的描述規則l 數據的操作規則共 57 頁 第 3 3 頁3.1 3.1 3.23.2 3.33.33.43.43.53.53.63.6基本符號基本符號 數據類型數據類型運算符和表達式運算符和表達式數據類型轉換數據類型轉換自增運算和自減運算自增運算和自減運算位運算位運算共 57 頁 第 4 4 頁程序設計語言的基本規則包括程序設計語言的基本規則包括l 常數常數l 變量變量l 運算符運算符l 表達式表達式l 函數函數xaxfsin536 . 3)( 表達式表達式常數變量變量函數函數運算符運算符共 57 頁 第

2、5 5 頁 常數常數3 3、5 5和和3.63.6的存放空間是否相同?的存放空間是否相同? 變量變量a a如何表示?如何存放?如何表示?如何存放? 計算機如何知道計算機如何知道3.63.6和和a a之間的關系?之間的關系? 和和sin xsin x 如何輸入?如何存放?如何輸入?如何存放? 計算機如何識別計算機如何識別“=”=”?運算結果放在?運算結果放在哪里?哪里?計算機完成上述計算,首先要計算機完成上述計算,首先要解決數據的解決數據的輸入輸入和和存放存放問題問題問題53共 57 頁 第 6 6 頁數據數據是程序處理的對象是程序處理的對象數據的存儲數據的存儲數據的操作數據的操作程序程序共 5

3、7 頁 第 7 7 頁1. C1. C語言的基本字符集語言的基本字符集l 數數 字字:0 1 2 3 4 5 6 7 8 9l 字字 母母:a b c z A B C Zl 運運 算算 符符:+ - * / % = = != = & | & | ( ) - . ! ? : , ; “ l 特殊符號:特殊符號:_(下劃線下劃線) 回車回車(r) 換行換行(n) 制表符制表符(t) 基本字符集基本字符集共 57 頁 第 8 8 頁2. C語言的標識符語言的標識符 基本標識符:變量名、函數名、文件名、基本標識符:變量名、函數名、文件名、 數組名、類型名數組名、類型名 規則:字母或下劃

4、線開頭,后面是字母、規則:字母或下劃線開頭,后面是字母、 下劃線或數字下劃線或數字call_n test39 _string1 abccall.n 39test -string1 c2.0 共 57 頁 第 9 9 頁auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typedef union unsigned voidvolatile while3

5、. C語言的關鍵字語言的關鍵字用戶不能用關鍵字作標識符!用戶不能用關鍵字作標識符!共 57 頁 第 1010 頁4. 常量常量在程序運行中,其值保持不變的量稱為常量在程序運行中,其值保持不變的量稱為常量。常量的表示方法常量的表示方法: 數值常量數值常量 例如:例如:10,3 , 2.68等等 符號常量符號常量 用一個符號代表一個常量用一個符號代表一個常量 必須必須先定義先定義后使用后使用,習慣用習慣用大寫大寫字母表示。字母表示。例如例如: #define PI 3.1415926 main( ) float l,s,r=2; l=2*PI*r; s=PI*r*r; printf(“l=%d,

6、s=%d”, l,s); 常用這種方式簡化程常用這種方式簡化程序調試,但是必須在序調試,但是必須在程序的開頭定義要使程序的開頭定義要使用的符號常量。稱為用的符號常量。稱為宏定義。宏定義。共 57 頁 第 1111 頁5.5.變量變量在程序執行期間其值可以改變的量。在程序執行期間其值可以改變的量。l有關變量的規定有關變量的規定u 變量通過變量名標識,變量名和內存中變量通過變量名標識,變量名和內存中的存儲單元相對應。編寫程序時通過變量的存儲單元相對應。編寫程序時通過變量名來存、取存儲單元。名來存、取存儲單元。u 變量必須先定義,后使用。變量必須先定義,后使用。變量變量memorya88 81000

7、H1000H1001H1001H1002H1002H2552551212共 57 頁 第 1212 頁命名規則命名規則: 變量名由標識符表示,只能由變量名由標識符表示,只能由字母字母、數字數字和和下劃線下劃線三種字符組成,且第一個字符必三種字符組成,且第一個字符必須須為為字母字母或或下劃線下劃線。 例如:例如:下列標識符中,不合法的變量名有:下列標識符中,不合法的變量名有: M.D.John 12%gf 1add _ce36 age& 5thclass lotus-1-2-3 cd*ef 說明:說明: *變量要變量要“先定義,后使用先定義,后使用” 定義格式定義格式:類型說明符類型說明

8、符 標識符標識符1, ,1, ,標識符標識符n n 例如:例如:int x, y, z; float a, b, c, d; *選變量名時,要做到選變量名時,要做到“見名知義見名知義” 例如:例如:name , st_age , xm , nl , class , sum共 57 頁 第 1313 頁 許多程序設計語言都把它們能處理的數據分成許多程序設計語言都把它們能處理的數據分成若干類,這些類就是數據類型。若干類,這些類就是數據類型。 為什么要劃分數據類型?為什么要劃分數據類型? 不同類型的數據在計算機內表示不同;不同類型的數據在計算機內表示不同; 不同類型的數據能執行的運算不同;不同類型的

9、數據能執行的運算不同; 計算機能處理的問題中的數據是廣義的。計算機能處理的問題中的數據是廣義的。變量名代表內存中的存儲單元,變量的類型決定存變量名代表內存中的存儲單元,變量的類型決定存儲單元的大小。儲單元的大小。共 57 頁 第 1414 頁 C語言數據類型語言數據類型: 整型整型 字符型字符型 單精度型單精度型 算術類型算術類型 實型(浮點型)實型(浮點型) 基本類型基本類型 枚舉類型枚舉類型 雙精度型雙精度型 指針類型指針類型數據類型數據類型 數組數組 構造類型構造類型 結構體類型結構體類型 共用體類型共用體類型規定:在程序中用到的數據,必須指定數據類型。共 57 頁 第 1515 頁 整

10、型常量的不同數值表示方法整型常量的不同數值表示方法十進制數:十進制數:0 09 9八進制數:八進制數:0 07 7,以,以0 0開頭開頭十六進制數:十六進制數:0 09 9,A AF/aF/af f,以,以0 x0 x或或0X0X開頭開頭 1.1.整型常量整型常量 整型常量的類型整型常量的類型w根據值大小默認類型根據值大小默認類型例:例: 3276732767的類型是的類型是intintw在常量后面加在常量后面加l l或或L L,表示表示long long intint型型 例:例:123L123L,0L0L,432l 432l 都是都是long long intint型常量型常量共 57 頁

11、 第 1616 頁l整型變量的整型變量的形式形式 (TC 2.0)共六種共六種基本整型基本整型短整型短整型長整型長整型無符號整型無符號整型無符號短整型無符號短整型無符號長整型無符號長整型int int short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long在內存中占字節數與所選系統有關在內存中占字節數與所選系統有關占內存字節數占內存字節數2 22 24 42 22 24 42.2.整型變量整型變量 ANSI C ANS

12、I C標準沒有規定各類數據所占內存的字節數,只要標準沒有規定各類數據所占內存的字節數,只要求求longlong型數據不短于型數據不短于intint型,型,shortshort型不長于型不長于intint型。型。共 57 頁 第 1717 頁l整型變量的整型變量的形式(形式(VC+6.0)共六種共六種基本整型基本整型短整型短整型長整型長整型無符號整型無符號整型無符號短整型無符號短整型無符號長整型無符號長整型int int short int short int long intlong intunsigned intunsigned intunsigned short unsigned shor

13、t unsigned longunsigned long占內存字節數占內存字節數4 42 24 44 42 24 4VC+VC+規定:規定:shortshort型占型占2 2個字節,個字節,intint和和longlong都占都占4 4個字節。個字節。共 57 頁 第 1818 頁l整型變量的定義整型變量的定義int i, j; unsigned int x,y;變量有值嗎?變量有值嗎?共 57 頁 第 1919 頁 類型類型 類型說明符類型說明符 長度長度 數的范圍數的范圍基本型基本型 int 2 int 2字節字節 -32768 -327683276732767短整型短整型 short 2

14、short 2字節字節 -2 -215152 21515-1 -1 長整型長整型 long 4 long 4字節字節 -2 -231312 23131-1-1無符號整型無符號整型 unsigned int 2 unsigned int 2字節字節 0 06553565535無符號短整型無符號短整型 unsigned short unsigned short 2 2字節字節 0 06553565535無符號長整型無符號長整型 unsigned long unsigned long 4 4字節字節 0 0(2 23232-1-1) 思考:思考:j j、m m、x x 所占存儲容量和取值范圍?存儲容

15、量和取值范圍?int i, j; unsigned int x,y;(TC環境)共 57 頁 第 2020 頁最大的負數?最大的負數?最大的正數?最大的正數?VC+6.0中中int整型數據占整型數據占4個字節;個字節;數值的范圍:數值的范圍:-21474836482147483647共 57 頁 第 2121 頁例例:main() short int a,b,c; a=32767; b=3; c=a+b; printf(c=%dn,c); C-32766的補碼形式的補碼形式,程序運行結果溢出程序運行結果溢出共 57 頁 第 2222 頁1.1.實型變量實型變量實型變量分實型變量分類類:單精度、

16、雙精度和長雙精度型。:單精度、雙精度和長雙精度型。 實型變量的有關規則:實型變量的有關規則:類型名稱類型名稱長長long 16字節字節18-19共 57 頁 第 2323 頁二進制數可表示為:二進制數可表示為: 110.011(B)=1.100112+10尾數尾數的位數決定數的精度,數的精度,階碼階碼的位數決定數的范圍數的范圍 實型數據也稱為浮點數,是指小數點位置可以任意浮動的數實型數據也稱為浮點數,是指小數點位置可以任意浮動的數 。 科學記數法表示:十進制數科學記數法表示:十進制數 -12345678 可表示為:可表示為: -12345678 = -1.2345678 107計算機中采用以計

17、算機中采用以2為底的科學記數法存儲:為底的科學記數法存儲: N= 數符數符尾數尾數2階碼階碼 (其中:數符(其中:數符0為正,為正,1為負,尾數和階碼都用二進數表示)為負,尾數和階碼都用二進數表示)實型數據在內存中的存放形式:實型數據在內存中的存放形式: 由于機器存儲位數的限制,浮點數都是近似值,多個浮點數由于機器存儲位數的限制,浮點數都是近似值,多個浮點數運算會產生誤差。雙精度型用于擴大存儲位數,目的是增加實運算會產生誤差。雙精度型用于擴大存儲位數,目的是增加實數的長度,減少累積誤差,改善計算精度。數的長度,減少累積誤差,改善計算精度。共 57 頁 第 2424 頁將實數分成兩類將實數分成兩

18、類: : 浮點數(浮點數(FloatFloat)和雙精度數()和雙精度數(DoubleDouble)。)。浮點數用浮點數用3232位表示:位表示: 數符數符1 1位,階碼位,階碼8 8位,尾數位,尾數2323位位雙精度數用雙精度數用6464位表示:數符位表示:數符1 1位位, , 階碼階碼1111位位, ,尾數尾數5252位為了處理負指數的情況,實際數據的指數存儲時位為了處理負指數的情況,實際數據的指數存儲時數值加上數值加上127127(2 27 7-1-1)后進行存儲。尾數只存儲小數)后進行存儲。尾數只存儲小數部分。部分。單精度浮點數機內存儲格式(占單精度浮點數機內存儲格式(占4 4個字節,

19、個字節,3232位):位): 階碼數符尾數1位位8位位23位位單精度實數單精度實數的的精度精度取決于小數部分的取決于小數部分的23位二進制數位所能表達的數值位二進制數位所能表達的數值位數,將其轉換為十進制,位數,將其轉換為十進制, 最多可表示最多可表示7位十進制數字,所以單精度實位十進制數字,所以單精度實數的有效位是數的有效位是7位。位。共 57 頁 第 2525 頁2. 實型常量實型常量 (l 兩種表示形式:兩種表示形式:十進制數形式:十進制數形式:由數字和小數點及正負號組成。由數字和小數點及正負號組成。 (注意:必須有小數點注意:必須有小數點) 例如:例如:23.678 .678 23.2

20、3.678 .678 23.指數形式:指數形式:由數字、小數點、字母由數字、小數點、字母e或或E及正負號組成。及正負號組成。(注:注:e或或E之前必須有數字,且后指數必須為整數之前必須有數字,且后指數必須為整數) 例如:例如:3.5E-5 2e3 3.5E-5 2e3 E2 3.6e3.5 .e6 e E2 3.6e3.5 .e6 e 不合法!3.5乘以10的-5次方,即0.0000352乘以10的3次方,即2000對于超過有效數字位的數據,對于超過有效數字位的數據,系統存儲時自動舍去。系統存儲時自動舍去。共 57 頁 第 2626 頁1. 字符常量字符常量 用單引號括起來的一個字符(用單引號

21、括起來的一個字符( 只能包含一個字符)只能包含一個字符) 例如:例如: a A $ ! abc、“a” 注注: a與與A是是 不同的字符常量。不同的字符常量。共 57 頁 第 2727 頁轉義字符:轉義字符:l 轉義字符的概念:轉義字符的概念:是一種特殊的字符常是一種特殊的字符常量,用于表示常用的、但卻難以用一般形量,用于表示常用的、但卻難以用一般形式表示的不可顯示字符。式表示的不可顯示字符。l 轉義字符的表示轉義字符的表示: : 用一個轉義標識符用一個轉義標識符“”開頭,后面是需要的轉義字符。常用開頭,后面是需要的轉義字符。常用的轉義字符序列的字符常量見下表:的轉義字符序列的字符常量見下表:

22、共 57 頁 第 2828 頁轉義字符表:轉義字符表:轉義字符轉義字符 功功 能能 n 換行換行 v 垂直制表垂直制表 b 退格退格 r 回車回車 f 走紙換頁走紙換頁 t 跳到下一個制表位跳到下一個制表位(7列列) 反斜線字符反斜線字符 單引號字符單引號字符 “ 雙引號字符雙引號字符 ddd 至位八進制數表示的字符至位八進制數表示的字符 xdd 至位十六進制數表示的字符至位十六進制數表示的字符轉義符轉義符“”表示將其表示將其后的字符原來的含義進后的字符原來的含義進行轉換,變成某種另外行轉換,變成某種另外特殊約定的含義。特殊約定的含義。共 57 頁 第 2929 頁例:例:main()main

23、() printf(“ctlanguagsberCn”); printf(“ctlanguagsberCn”); printf(“istusef165x6c”); printf(“istusef165x6c”); 屏幕輸出:屏幕輸出:C languageis useful165轉換為十進制為117,是ASCII的u6c轉換為十進制為108,是ASCII的l共 57 頁 第 3030 頁定義形式定義形式: char占存儲空間占存儲空間 : 一個變量一個字節一個變量一個字節2. 字符變量字符變量一個字符變量只能包含一個字符一個字符變量只能包含一個字符char a,b,c ;char a,b,c ;

24、a=1;a=1;b=B;b=B;c=c;c=c; 例:例:共 57 頁 第 3131 頁aa的的ASCIIASCII值為值為97 97 內存中存儲形式內存中存儲形式0 1 1 0 0 0 0 1例:例: aa、AA、110 1 1 0 0 0 0 1整型數整型數97 97 內存中存儲形式內存中存儲形式0 0 0 0 0 0 0 0共 57 頁 第 3232 頁main()main() char a; char a; int b; int b; a=A; a=A; b=a+25; b=a+25; printf(“%c,%d,%c,%d”,a,a,b,b); printf(“%c,%d,%c,%d

25、”,a,a,b,b); 例:例: 計算字符計算字符A與整型數據與整型數據25的和。的和。程序運行結果:程序運行結果:A,65,Z,90共 57 頁 第 3333 頁3.3.字符串常量字符串常量n n個字符組成的字符串常量個字符組成的字符串常量, , 占內存空間為占內存空間為 n+1 n+1 個字節。個字節。c ch hi in na a00字符串結束標記字符串結束標記“空空”字符字符例:例:a a 串長串長 1 1 This is C stringThis is C string 串長串長1616 (空格)(空格) 串長串長1 1 (不含空格)(不含空格) 串長串長0 0共 57 頁 第 34

26、34 頁在程序中,可以用字符常量或字符串常量表示單個在程序中,可以用字符常量或字符串常量表示單個字符,例如字符,例如 aa,或,或“a”a”,兩者的區別如下:,兩者的區別如下:(1 1) 字符串字符串aa在內存中占在內存中占2 2個字節,而字符個字節,而字符a a 在內存中占在內存中占1 1個字節。個字節。 字符串字符串a a 字符字符aa(2 2) 不能將字符串賦給一個字符變量。不能將字符串賦給一個字符變量。例:例: char ch1,ch2;char ch1,ch2; ch1=a; /ch1=a; /* *正確正確* */ / ch2=a; / ch2=a; /* *錯誤錯誤* */ /a

27、0a共 57 頁 第 3535 頁1.1.以下不合法的變量名為:以下不合法的變量名為: (A) _123 (B) IF (C) e4 (D)float(A) _123 (B) IF (C) e4 (D)float2.2.指出下列字符串的長度及輸出內容:指出下列字符串的長度及輸出內容: “ 054 ” “ 054 ” “x56”cta ” “x56”cta ” “ntbab” “ntbab” 3 輸出輸出 ,輸出輸出V”c a6 輸出輸出 ab十進制為86對應”V”“ab0efg”“ab011efg”2 ab6 ab efg十進制為9對應ASCII為”t”練 習共 57 頁 第 3636 頁運算

28、符運算符: : 描述各種操作的符號。描述各種操作的符號。3.3.13.3.1算術運算符和算術表達式算術運算符和算術表達式1.1.算術運算符算術運算符 2.2.算術表達式:算術表達式: 由算術運算符、常數、變量、函數和圓括號組成。由算術運算符、常數、變量、函數和圓括號組成。 應注意:左右括號必須配對,多層括號都用圓括號表示。應注意:左右括號必須配對,多層括號都用圓括號表示。 例如:例如: a + b + a*b/c +2.83. 優先級:優先級:高于高于4. 結合性:結合性:“左結合性左結合性”或稱為或稱為“自左至右的結合方向自左至右的結合方向”即運算即運算對象先與左邊的運算符結合。對象先與左邊

29、的運算符結合。 例如:例如:a - b + c 注意注意: / 是除法運算符。當兩個整數相除時為整除。是除法運算符。當兩個整數相除時為整除。 9/2=4; -9/2=-4; (若有一個是負數若有一個是負數,采取向零取整采取向零取整) %是取余數運算符是取余數運算符,只能作用于兩個整數。運算結果的符號只能作用于兩個整數。運算結果的符號與被除數的符號一致。與被除數的符號一致。 9%2=1 ; -9%2=-1 ; 9%-2=1; 共 57 頁 第 3737 頁符號符號說明說明優先級優先級結合性結合性算術表達式算術表達式+-單目取正單目取正單目取負單目取負1414從右到左從右到左a=+8b=-a*/%

30、乘乘除除取余取余131313從左到右從左到右a=12*5.5b=14/6.5c=12%5+-加加減減1212從左到右從左到右a=15+8.5b=18-8.5基本算術運算符基本算術運算符共 57 頁 第 3838 頁例例: 將下列數學表達式將下列數學表達式: )sinsin(sinzyxbacba寫成符合寫成符合C語言規則的表達式如下語言規則的表達式如下:(a+b+c)/(sqrt(a)+b*( sin(x)+sin(y)+sin(z) 表達式必須書寫在一行,其中表達式必須書寫在一行,其中sqrt(a)和和sin(x)、sin(y)、sin(z)都是數學函數的引用,表達式中用了都是數學函數的引用

31、,表達式中用了三層括號,以保證表達式的運算順序。三層括號,以保證表達式的運算順序。 強調強調: 對對C語言表達式的理解和掌握,除了要嚴格遵循表達語言表達式的理解和掌握,除了要嚴格遵循表達式構成的規則,還要加強對表達式含義的理解,掌握運算符式構成的規則,還要加強對表達式含義的理解,掌握運算符的優先級和結合規則。在此基礎上才能靈活地運用表達式,的優先級和結合規則。在此基礎上才能靈活地運用表達式,有效地對實際問題進行描述。有效地對實際問題進行描述。共 57 頁 第 3939 頁常用的數學庫函數:常用的數學庫函數: 平方根函數:平方根函數:sqrt(x),sqrt(x),計算計算sqrt(4.0)sq

32、rt(4.0)的值為的值為2.02.0絕對值函數:絕對值函數:fabs(x)fabs(x)冪函數:冪函數: pow(x.n),pow(x.n),計算計算x xn n指數函數:指數函數: exp(x)exp(x),計算,計算e ex x以以e e為底的對數函數為底的對數函數log(x),log(x),計算計算ln x ln x 共 57 頁 第 4040 頁3.3.2 賦值運算符和賦值表達式賦值運算符和賦值表達式1.1.一般賦值運算符:一般賦值運算符:= =賦值表達式:由賦值運算符將一個變量和一個表達式賦值表達式:由賦值運算符將一個變量和一個表達式連接起來的式子。連接起來的式子。形式:變量名形式

33、:變量名= =常量或表達式常量或表達式功能:將右邊常量或表達式的值賦給左邊的變量。功能:將右邊常量或表達式的值賦給左邊的變量。例:例:a=3; b=c+d ; a=3; b=c+d ; 說明:說明: 賦值后,原來左邊的值被右邊表達式的值替換;賦值后,原來左邊的值被右邊表達式的值替換; 如果右邊表達式的值的類型與左邊變量的類型不一如果右邊表達式的值的類型與左邊變量的類型不一 致,以左致,以左邊變量的類型為準,將表達式值的類型轉換為左邊變量的類邊變量的類型為準,將表達式值的類型轉換為左邊變量的類型。型。 結合方向結合方向“從右向左從右向左”。 例:例: x=y=a+b;共 57 頁 第 4141

34、頁在定義變量時為其指定值在定義變量時為其指定值方法方法:int a=5;int a=5;int a,b,c=5;int a,b,c=5;int a5,b=5,c=5;int a5,b=5,c=5;int a=b=c=5;int a=b=c=5;1. 定義變量的同時定義變量的同時為其初始化為其初始化2. 初始化不是在編初始化不是在編譯時進行譯時進行,而是在程而是在程序運行時完成的序運行時完成的2. 2. 變量的初始化變量的初始化初始化初始化共 57 頁 第 4242 頁例:main() int a; double b=3.5; a=b+2.1; printf(“a=%d”,a); 運行結果:a=

35、5共 57 頁 第 4343 頁3. 復合賦值運算符復合賦值運算符 復合賦值運算符:復合賦值運算符: 在賦值符在賦值符“=”之前加上其它運算符之前加上其它運算符 共有共有10種復合賦值運算符種復合賦值運算符: += ,=, (算術運算有關)(算術運算有關) , &, =, |= (與位運算有關)(與位運算有關) 例:例:int a=1, b=2, c=2; double x=1.5,y=2,z=2; c*=a-b; c的值?的值? 2*(1-2)=-2 int型型 z-=x+y; z的值?的值? 2.0-(1.5+2.0)=-1.5 double型型共 57 頁 第 4444 頁(1)

36、 (1) 優先級優先級 當若干個運算符同時出現在表達式中時,當若干個運算符同時出現在表達式中時,優先級規定了優先級規定了運算的先后次序運算的先后次序。優先級有。優先級有1515級。級。 C C語言把圓括號作為運算符,規定它的優先級最高語言把圓括號作為運算符,規定它的優先級最高(15(15級級) ),從而保證優先運算圓括號內的式子,逗號運算符的級別,從而保證優先運算圓括號內的式子,逗號運算符的級別最低,規定為最低,規定為1 1級。級。(2) (2) 結合性結合性 當若干個具有相同優先級的運算符相鄰出現在表達式中當若干個具有相同優先級的運算符相鄰出現在表達式中時時, ,結合性規定了運算的先后次序結

37、合性規定了運算的先后次序。分為。分為“從左到右從左到右”和和“從右到左從右到左”兩個結合方向。兩個結合方向。 大多數運算符的結合方向為大多數運算符的結合方向為 “ “從左到右從左到右”; 單目運算符、賦值運算符和條件運算符的結合方向單目運算符、賦值運算符和條件運算符的結合方向 “ “從右從右到左到左”(單目運算符是指作用于一個操作對象的運算符(單目運算符是指作用于一個操作對象的運算符) )。(3 3)雙目運算符兩邊運算對象的類型必須一致。)雙目運算符兩邊運算對象的類型必須一致。共 57 頁 第 4545 頁1.1.逗號運算符:即逗號運算符:即“,” 優先級:所有運算符中級別優先級:所有運算符中

38、級別最低的運算符最低的運算符。2.2.逗號表達式逗號表達式 形式:形式:表達式表達式1 1,表達式,表達式2 2,表達式,表達式n n 求解過程:順次求解表達式求解過程:順次求解表達式1 1,表達式,表達式22 最后求解表達式最后求解表達式n n。 表達式值:逗號表達式的值為表達式表達式值:逗號表達式的值為表達式n n的值。的值。 結合性結合性: :左結合左結合例如:例如:a=3a=3* *5,a5,a* *4 4 a=3 a=3* *5,a5,a* *4,a+54,a+5 x=(a=4%3 , a+1, a x=(a=4%3 , a+1, a* *10)10)表達式的值60表達式的值20表達

39、式的值10共 57 頁 第 4646 頁l 轉換原則轉換原則 整型、實型和字符型可以混合運算整型、實型和字符型可以混合運算 一般類型數據先轉換為標準型一般類型數據先轉換為標準型 不同類型的要先轉換為相同類型不同類型的要先轉換為相同類型l形式形式 自動進行自動進行-隱式轉換隱式轉換 強制進行強制進行-顯式轉換顯式轉換共 57 頁 第 4747 頁轉換規則:轉換規則: int unsigned int long int unsigned long int double short , char float(1) float 型數據一律轉換成型數據一律轉換成double 型數據。型數據。(2) ch

40、ar 和和short int 型數據一律轉換成型數據一律轉換成 int 型數據型數據 以上兩條轉換原則說明:即使兩個操作數類型相同,但只以上兩條轉換原則說明:即使兩個操作數類型相同,但只要它們同屬要它們同屬 char , short int 或或 float 類型,則轉換一定發生。類型,則轉換一定發生。豎直方向的轉換表示那些一定豎直方向的轉換表示那些一定要發生的轉換;橫向表示操作要發生的轉換;橫向表示操作數的類型轉換的方向。數的類型轉換的方向。優先級低的向優先級高的轉換優先級低的向優先級高的轉換共 57 頁 第 4848 頁已知:已知:int i; long e; float f; doubl

41、e d; f = 10 + a + i * f - d / e 注意注意:運算過程中的類型轉換:運算過程中的類型轉換不是不是變量變量本身數據類型的轉換本身數據類型的轉換共 57 頁 第 4949 頁#include #include main()main() int c=15,h=20,s; int c=15,h=20,s; s=1/2 s=1/2* *1515* *20;20; printf(s=%d,s); printf(s=%d,s); 運行結果:運行結果:150共 57 頁 第 5050 頁3.4.2 強制類型轉換強制類型轉換 將指定表達式的值轉換為指定類型將指定表達式的值轉換為指定類

42、型. . 形式:(類型名)(表達式)形式:(類型名)(表達式)例如:例如:( double) (a+b)( double) (a+b) 說明:說明: () 表達式應用括號括起表達式應用括號括起例如:例如: (int)(x+y) ; (int)x+y;() 在強制類型轉換時,得到一個所需類型的中間變在強制類型轉換時,得到一個所需類型的中間變量,原來變量類型未發生變化。量,原來變量類型未發生變化。例如:例如:float x=8.6 ; int y; y=(int)x ;共 57 頁 第 5151 頁作用:作用:使變量的值增加或減,如:使變量的值增加或減,如:i , i (使用之使用之前前,先使,先

43、使i的值加(減)的值加(減)1)i, i (使用之(使用之后后,使,使i的值加(減)的值加(減)1) +i 先執行先執行i=i+1,再使用,再使用i的值的值 i+ 先使用先使用i的值,再執行的值,再執行i=i+1例如:例如:int a=1 , b; b=+a ; b=a+ ;說明:說明:(1 1)+、- - -為單目運算符為單目運算符(2 2)+ + 、- - -只能用于變量,而不能用于常量或表達式。只能用于變量,而不能用于常量或表達式。 例如:例如:10+10+,(,(x+y)+, +a, b+ x+y)+, +a, b+ 中合法的為:中合法的為:(3 3)自增、自減運算符為)自增、自減運算

44、符為右結合性右結合性(即自右至左)。(即自右至左)。 例如:例如:a+ a+ (a+a+) 共 57 頁 第 5252 頁main() int i=3,j=3; i+; +j; printf(“i=%d,j=%d”,i,j);(4)單獨作一個語句使用時,兩種形式的結果一樣。單獨作一個語句使用時,兩種形式的結果一樣。(5)當出現在其它表達式中時,兩種形式結果不同。當出現在其它表達式中時,兩種形式結果不同。main() int i=1,j=1,m,n; m=i+; n=+j; printf(i=%d,m=%dn j=%d,n=%d,i,m,j,n);共 57 頁 第 5353 頁i=2;k=i+i+i+;執行完分執行完分號再自增號再自增i=?k=?算一算?共

溫馨提示

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

評論

0/150

提交評論