Cd-2-數(shù)據(jù)類型運算符_第1頁
Cd-2-數(shù)據(jù)類型運算符_第2頁
Cd-2-數(shù)據(jù)類型運算符_第3頁
Cd-2-數(shù)據(jù)類型運算符_第4頁
Cd-2-數(shù)據(jù)類型運算符_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)類型數(shù)據(jù)類型運算符運算符表達式表達式共 62 頁 第 2 2 頁l 數(shù)據(jù)的描述規(guī)則l 數(shù)據(jù)的操作規(guī)則共 62 頁 第 3 3 頁基本符號基本符號 數(shù)據(jù)類型數(shù)據(jù)類型運算符和表達式運算符和表達式數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換自增運算和自減運算自增運算和自減運算位運算位運算共 62 頁 第 4 4 頁程序設(shè)計語言的基本規(guī)則包括程序設(shè)計語言的基本規(guī)則包括l 常數(shù)常數(shù)l 變量變量l 運算符運算符l 表達式表達式l 函數(shù)函數(shù)xaxfsin536 . 3)(什么是語言規(guī)則?什么是語言規(guī)則?為什么要有這些規(guī)則?為什么要有這些規(guī)則? 表達式表達式常數(shù)變量變量函數(shù)函數(shù)運算符運算符共 62 頁 第 5 5 頁 常數(shù)常

2、數(shù)3 3、5 5和和3.63.6的存放空間是否相同?的存放空間是否相同? 變量變量a a如何表示?如何存放?如何表示?如何存放? 計算機如何知道計算機如何知道3.63.6和和a a之間的關(guān)系?之間的關(guān)系? 和和sin xsin x 如何輸入?如何存放?如何輸入?如何存放? 計算機如何識別計算機如何識別“=”=”?運算結(jié)果放在?運算結(jié)果放在哪里?哪里?計算機完成上述計算,首先要計算機完成上述計算,首先要解決數(shù)據(jù)的解決數(shù)據(jù)的輸入輸入和和存放存放問題問題問題53共 62 頁 第 6 6 頁 程序的任務是對數(shù)據(jù)進行處理,數(shù)據(jù)程序的任務是對數(shù)據(jù)進行處理,數(shù)據(jù)是程序處理的對象,而運算符是施加是程序處理的對

3、象,而運算符是施加給這些數(shù)據(jù)的操作。給這些數(shù)據(jù)的操作。 數(shù)據(jù)和運算符是表達式的基本元素數(shù)據(jù)和運算符是表達式的基本元素數(shù)據(jù)的存儲數(shù)據(jù)的存儲數(shù)據(jù)的操作數(shù)據(jù)的操作程序程序共 62 頁 第 7 7 頁C C語言語言的基本字符集的基本字符集l 數(shù)數(shù) 字字:0 1 2 3 4 5 6 7 8 9l 字字 母母:a b c z A B C Zl 運運 算算 符符:+ - * / % = = != = & | & | ( ) - . ! ? : , ; “ l 特殊符號:特殊符號:_(下劃線下劃線) 回車回車(r) 換行換行(n) 制表符制表符(t) 基本字符集基本字符集共 62 頁 第 8

4、8 頁C語言語言的標識符的標識符 包括:包括:變量名、函數(shù)名、文件名、數(shù)組名、變量名、函數(shù)名、文件名、數(shù)組名、 類型名等。類型名等。 規(guī)則:規(guī)則:只能由字母、數(shù)字和下劃線組成;只能由字母、數(shù)字和下劃線組成; 第一個字符必須為字母或下劃線。第一個字符必須為字母或下劃線。 C C語言的標識符:語言的標識符:關(guān)鍵字關(guān)鍵字 用戶自定義標識符用戶自定義標識符call_n test39 _string1 abccall.n 39test -string1 c2.0 共 62 頁 第 9 9 頁auto break case char constcontinue default do double else

5、enum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typedef union unsigned voidvolatile whileC語言語言的關(guān)鍵字的關(guān)鍵字用戶不能用關(guān)鍵字作標識符!用戶不能用關(guān)鍵字作標識符!共 62 頁 第 1010 頁常量常量在程序運行中,其值保持不變的量稱為常量在程序運行中,其值保持不變的量稱為常量。常量的表示方法常量的表示方法: 數(shù)值常量數(shù)值常量 例如:例如:10,3 , 2.68等等 符號常量符號常量 用一個符號代表一個常量用一個符號

6、代表一個常量 必須必須先定義先定義后使用后使用,習慣用習慣用大寫大寫字母表示。字母表示。例如例如: #define PI 3.1415926 main( ) float l,s,r=2; l=2*PI*r; s=PI*r*r; printf(“l(fā)=%d, s=%d”, l,s); 常用這種方式簡化程常用這種方式簡化程序調(diào)試,但是必須在序調(diào)試,但是必須在程序的開頭定義要使程序的開頭定義要使用的符號常量。稱為用的符號常量。稱為宏定義。宏定義。共 62 頁 第 1111 頁變量變量在程序執(zhí)行期間其值可以改變的量。在程序執(zhí)行期間其值可以改變的量。有關(guān)變量的規(guī)定有關(guān)變量的規(guī)定u 變量通過變量名標識,變量

7、名和內(nèi)存中變量通過變量名標識,變量名和內(nèi)存中的存儲單元相對應。編寫程序時通過變量的存儲單元相對應。編寫程序時通過變量名來存、取存儲單元。名來存、取存儲單元。u 變量必須先定義,后使用。變量必須先定義,后使用。變量變量memorya88 81000H1000H1001H1001H1002H1002H2552551212u變量定義的位置:函數(shù)的開頭或復合語句的開頭。變量定義的位置:函數(shù)的開頭或復合語句的開頭。共 62 頁 第 1212 頁命名規(guī)則命名規(guī)則: 變量名由標識符表示,只能由變量名由標識符表示,只能由字母字母、數(shù)字數(shù)字和和下劃線下劃線三種字符組成,且第一個字符必三種字符組成,且第一個字符必

8、須須為為字母字母或或下劃線下劃線。 例如:例如:下列標識符中,合法的變量名有:下列標識符中,合法的變量名有: M.D.John 12%gf 1add _ce36 age& 5thclass lotus-1-2-3 cd*ef 說明:說明: *變量要變量要“先定義,后使用先定義,后使用” 定義格式定義格式:類型說明符類型說明符 標識符標識符1, 1, , ,標識符標識符n n 例如:例如:int x, y, z; float a, b, c, d; *選變量名時,要做到選變量名時,要做到“見名知義見名知義” 例如:例如:name , st_age , xm , nl , class ,

9、sum * 注意區(qū)分大、小寫字母:注意區(qū)分大、小寫字母:SUNSUN、sunsun、SunSun共 62 頁 第 1313 頁 許多程序設(shè)計語言都把它們能處理的數(shù)據(jù)分成許多程序設(shè)計語言都把它們能處理的數(shù)據(jù)分成若干類,這些類就是數(shù)據(jù)類型。若干類,這些類就是數(shù)據(jù)類型。 為什么要劃分數(shù)據(jù)類型?為什么要劃分數(shù)據(jù)類型? 不同類型的數(shù)據(jù)在計算機內(nèi)表示不同;不同類型的數(shù)據(jù)在計算機內(nèi)表示不同; 不同類型的數(shù)據(jù)能執(zhí)行的運算不同;不同類型的數(shù)據(jù)能執(zhí)行的運算不同; 計算機能處理的問題中的數(shù)據(jù)是廣義的。計算機能處理的問題中的數(shù)據(jù)是廣義的。變量名代表內(nèi)存中的存儲單元,變量的類型決定存變量名代表內(nèi)存中的存儲單元,變量的類

10、型決定存儲單元的大小。儲單元的大小。共 62 頁 第 1414 頁 C語言數(shù)據(jù)類型語言數(shù)據(jù)類型: 整型整型 字符型字符型 單精度型單精度型 算術(shù)類型算術(shù)類型 實型(浮點型)實型(浮點型) 基本類型基本類型 枚舉類型枚舉類型 雙精度型雙精度型 指針類型指針類型數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組數(shù)組 構(gòu)造類型構(gòu)造類型 結(jié)構(gòu)體類型結(jié)構(gòu)體類型 共用體類型共用體類型規(guī)定:在程序中用到的數(shù)據(jù),必須指定數(shù)據(jù)類型。共 62 頁 第 1515 頁l整型變量的整型變量的形式形式 (TC 2.0)共六種共六種基本整型基本整型短整型短整型長整型長整型無符號整型無符號整型無符號短整型無符號短整型無符號長整型無符號長整型int in

11、t short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long在內(nèi)存中占字節(jié)數(shù)與所選系統(tǒng)有關(guān)在內(nèi)存中占字節(jié)數(shù)與所選系統(tǒng)有關(guān)占內(nèi)存字節(jié)數(shù)占內(nèi)存字節(jié)數(shù)2 22 24 42 22 24 4整型變量整型變量 ANSI C ANSI C標準沒有規(guī)定各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù),只要標準沒有規(guī)定各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù),只要求求longlong型數(shù)據(jù)不短于型數(shù)據(jù)不短于intint型,型,shortshort型不長于型不長于intint型。

12、型。共 62 頁 第 1616 頁l整型變量的整型變量的形式形式共六種共六種基本整型基本整型短整型短整型長整型長整型無符號整型無符號整型無符號短整型無符號短整型無符號長整型無符號長整型int int short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long占內(nèi)存字節(jié)數(shù)占內(nèi)存字節(jié)數(shù)4 42 24 44 42 24 4規(guī)定:規(guī)定:shortshort型占型占2 2個字節(jié),個字節(jié),intint和和longlong都占都占4 4

13、個字節(jié)。個字節(jié)。共 62 頁 第 1717 頁l整型變量的定義整型變量的定義int i, j; unsigned int x,y;變量有值嗎?變量有值嗎?占多少字節(jié)?占多少字節(jié)?共 62 頁 第 1818 頁類型名稱類型名稱類型說明符類型說明符字節(jié)數(shù)字節(jié)數(shù)位數(shù)位數(shù)取值范圍取值范圍基本整型基本整型int432-21474836482147483647-231 231-1216-3276832767-215 215-1短整型短整型short intshort216-3276832767-215 215-1長整型長整型long intlong432-21474836482147483647-231

14、231-1無符號基無符號基本整型本整型unsigned int unsigned432042949672950232-12160655350 216-1無符號無符號短整型短整型unsigned short intunsigned short2160655350 216-1無符號無符號長整型長整型unsigned long int unsigned long 432042949672950232-1 整型數(shù)據(jù)占用的存儲空間和取值范圍整型數(shù)據(jù)占用的存儲空間和取值范圍 提示:定義變量時注意考慮變量所提示:定義變量時注意考慮變量所占存儲容量和取值范圍存儲容量和取值范圍. .共 62 頁 第 1919

15、頁如:如:int型數(shù)的表示范圍型數(shù)的表示范圍: 存儲長度為存儲長度為16位位無符號整數(shù)無符號整數(shù)數(shù)據(jù)位數(shù)據(jù)位符號位符號位符號位符號位共 62 頁 第 2020 頁最大的正數(shù)?最大的正數(shù)?符號位符號位最大的負數(shù)?最大的負數(shù)?VC+6.0中中int整型數(shù)據(jù)占整型數(shù)據(jù)占4個字節(jié);個字節(jié);數(shù)值的范圍:數(shù)值的范圍:-21474836482147483647符號位符號位共 62 頁 第 2121 頁例例:main() short int a,b,c; a=32767; b=3; c=a+b; printf(c=%dn,c); C-32766的補碼形式的補碼形式,程序運行結(jié)果溢出程序運行結(jié)果溢出對負數(shù)的補碼

16、再求一次補,就對負數(shù)的補碼再求一次補,就可得到該數(shù)的原碼??傻玫皆摂?shù)的原碼。共 62 頁 第 2222 頁 整型常量的不同數(shù)值表示方法整型常量的不同數(shù)值表示方法十進制數(shù):十進制數(shù):0 09 9八進制數(shù):八進制數(shù):0 07 7,以,以0 0開頭開頭十六進制數(shù):十六進制數(shù):0 09 9,A AF/aF/af f,以以0 0 x x或或0X0X開頭開頭 整型常量整型常量 整型常量的類型整型常量的類型w根據(jù)值大小默認類型根據(jù)值大小默認類型例:例: 3276732767的類型是的類型是short int(int)short int(int)w在常量后面加在常量后面加l l或或L L,表示,表示long

17、intlong int型型 例:例:123L123L,0L0L,432l 432l 都是都是long intlong int型常量型常量共 62 頁 第 2323 頁實型變量實型變量實型變量分實型變量分類類:按數(shù)值的取值范圍不同分為三種:按數(shù)值的取值范圍不同分為三種: 單精度、雙精度和長雙精度型。單精度、雙精度和長雙精度型。 實型變量的有關(guān)規(guī)則:實型變量的有關(guān)規(guī)則:類型名稱類型名稱長長long 16字節(jié)字節(jié)18-19共 62 頁 第 2424 頁二進制數(shù)可表示為:二進制數(shù)可表示為: 110.011(B)=1.100112+10尾數(shù)尾數(shù)的位數(shù)決定數(shù)的精度,數(shù)的精度,階碼階碼的位數(shù)決定數(shù)的范圍數(shù)的

18、范圍 實型數(shù)據(jù)也稱為浮點數(shù),是指小數(shù)點位置可以任意浮動的數(shù)實型數(shù)據(jù)也稱為浮點數(shù),是指小數(shù)點位置可以任意浮動的數(shù) 。 科學記數(shù)法表示:十進制數(shù)科學記數(shù)法表示:十進制數(shù) -12345678 可表示為:可表示為: -12345678 = -1.2345678 107計算機中采用以計算機中采用以2為底的科學記數(shù)法存儲:為底的科學記數(shù)法存儲: N= 數(shù)符數(shù)符尾數(shù)尾數(shù)2階碼階碼 (其中:數(shù)符(其中:數(shù)符0為正,為正,1為負為負,尾數(shù)和階碼都用二進數(shù)表示),尾數(shù)和階碼都用二進數(shù)表示)實型數(shù)據(jù)在內(nèi)存中的存放形式:實型數(shù)據(jù)在內(nèi)存中的存放形式: 由于機器存儲位數(shù)的限制,浮點數(shù)都是近似值,多個浮點數(shù)由于機器存儲位數(shù)

19、的限制,浮點數(shù)都是近似值,多個浮點數(shù)運算會產(chǎn)生誤差。雙精度型用于擴大存儲位數(shù),目的是增加實運算會產(chǎn)生誤差。雙精度型用于擴大存儲位數(shù),目的是增加實數(shù)的長度,數(shù)的長度,減少累積誤差減少累積誤差,改善計算精度,改善計算精度。共 62 頁 第 2525 頁將實數(shù)分成兩類將實數(shù)分成兩類: : 浮點數(shù)(浮點數(shù)(FloatFloat)和雙精度數(shù)()和雙精度數(shù)(DoubleDouble)。)。浮點數(shù)用浮點數(shù)用3232位位表示:表示: 數(shù)符數(shù)符1 1位,階碼位,階碼8 8位,尾數(shù)位,尾數(shù)2323位位雙精度數(shù)用雙精度數(shù)用6464位位表示:數(shù)符表示:數(shù)符1 1位位, , 階碼階碼1111位位, ,尾數(shù)尾數(shù)5252位

20、。為了處理負指數(shù)的情況,實際數(shù)據(jù)的指數(shù)存儲位。為了處理負指數(shù)的情況,實際數(shù)據(jù)的指數(shù)存儲時數(shù)值加上時數(shù)值加上127127(2 27 7-1-1)后進行存儲。尾數(shù)只存儲?。┖筮M行存儲。尾數(shù)只存儲小數(shù)部分。數(shù)部分。單精度浮點數(shù)機內(nèi)存儲格式(占單精度浮點數(shù)機內(nèi)存儲格式(占4 4個字節(jié),個字節(jié),3232位):位): 階碼數(shù)符尾數(shù)1位位8位位23位位單精度實數(shù)單精度實數(shù)的的精度精度取決于小數(shù)部分的取決于小數(shù)部分的23位二進制數(shù)位所能表達的數(shù)值位二進制數(shù)位所能表達的數(shù)值位數(shù),將其轉(zhuǎn)換為十進制,位數(shù),將其轉(zhuǎn)換為十進制, 最多可表示最多可表示7位十進制數(shù)字,所以單精度實位十進制數(shù)字,所以單精度實數(shù)的有效位是數(shù)的

21、有效位是7位。位。共 62 頁 第 2626 頁實型常量實型常量 (l 兩種表示形式:兩種表示形式:十進制數(shù)形式:十進制數(shù)形式:由數(shù)字和小數(shù)點及正負號組成。由數(shù)字和小數(shù)點及正負號組成。 (注意:必須有小數(shù)點注意:必須有小數(shù)點) 例如:例如:23.678 .678 23.23.678 .678 23.指數(shù)形式:指數(shù)形式:由數(shù)字、小數(shù)點、字母由數(shù)字、小數(shù)點、字母e或或E及正負號組成。及正負號組成。(注:注:e或或E之前必須有數(shù)字,且后指數(shù)必須為整數(shù)之前必須有數(shù)字,且后指數(shù)必須為整數(shù)) 例如:例如:3.5E-5 2e3 3.5E-5 2e3 E2 3.6e3.5 .e6 e E2 3.6e3.5 .

22、e6 e 不合法!3.5乘以10的-5次方,即0.0000352乘以10的3次方,即2000對于超過有效數(shù)字位的數(shù)據(jù),對于超過有效數(shù)字位的數(shù)據(jù),系統(tǒng)存儲時自動舍去。系統(tǒng)存儲時自動舍去。共 62 頁 第 2727 頁 實型常量的類型實型常量的類型: 許多編譯系統(tǒng)將實型常量作為許多編譯系統(tǒng)將實型常量作為雙精度雙精度來處理來處理。 例如:例如:float x;float x; x=1.23456 x=1.23456* *6543.21;6543.21; 系統(tǒng)將系統(tǒng)將 1.23456 和和 6543.21 按雙精度存儲(占按雙精度存儲(占64位)位)和運算,得到一個雙精度的乘積,取前和運算,得到一個雙

23、精度的乘積,取前7位賦給位賦給x. 雖然精確,但降低了運算速度。雖然精確,但降低了運算速度。 建議按單精度存儲:建議按單精度存儲:1.234561.23456f f* *6543.216543.21f f 實型常量可以賦給三種不同的實型變量,系統(tǒng)根據(jù)實型常量可以賦給三種不同的實型變量,系統(tǒng)根據(jù)類型自動截取相應的有效數(shù)字。類型自動截取相應的有效數(shù)字。共 62 頁 第 2828 頁 字符型數(shù)據(jù)用來表示一個字符值。在計算機內(nèi)字符型數(shù)據(jù)用來表示一個字符值。在計算機內(nèi)部存儲字符的部存儲字符的ASCII碼值。碼值。字符常量字符常量 用單引號括起來的一個字符(用單引號括起來的一個字符( 只能包含一個字符)只

24、能包含一個字符) 例如:例如: a 、 A 、$ 、 ! abc、“a” 注注: a 與與 A是是 不同的字符常量。不同的字符常量。共 62 頁 第 2929 頁轉(zhuǎn)義字符:轉(zhuǎn)義字符:l 轉(zhuǎn)義字符的概念轉(zhuǎn)義字符的概念l一種特殊的字符常量,用于表示常用的一種特殊的字符常量,用于表示常用的、但卻難以用一般形式表示的不可顯示、但卻難以用一般形式表示的不可顯示字符字符l 轉(zhuǎn)義字符的表示轉(zhuǎn)義字符的表示l用一個轉(zhuǎn)義標識符用一個轉(zhuǎn)義標識符“ ”開頭,后面是需開頭,后面是需要的轉(zhuǎn)義字符要的轉(zhuǎn)義字符共 62 頁 第 3030 頁轉(zhuǎn)義字符表轉(zhuǎn)義字符表轉(zhuǎn)義字符轉(zhuǎn)義字符 功功 能能 n 換行換行 v 垂直制表垂直制表

25、b 退格退格 r 回車回車 f 走紙換頁走紙換頁 t 跳到下一個制表位跳到下一個制表位(7列列) 反斜線字符反斜線字符 單引號字符單引號字符 “ 雙引號字符雙引號字符 ddd 至位八進制數(shù)表示的字符至位八進制數(shù)表示的字符 xdd 至位十六進制數(shù)表示的字符至位十六進制數(shù)表示的字符轉(zhuǎn)義符轉(zhuǎn)義符“ ” 表示將其后表示將其后的字符原來的含義進行的字符原來的含義進行轉(zhuǎn)換,變成某種另外特轉(zhuǎn)換,變成某種另外特殊約定的含義殊約定的含義共 62 頁 第 3131 頁例:例:main()main() printf(“ctlanguagsberCn”); printf(“ctlanguagsberCn”); pri

26、ntf(“istusef165x6c”); printf(“istusef165x6c”); 屏幕輸出:屏幕輸出:C languageis useful165轉(zhuǎn)換為十進制為117,是ASCII的u6c轉(zhuǎn)換為十進制為108,是ASCII的l共 62 頁 第 3232 頁定義形式定義形式: 用用 char類型說明類型說明占存儲空間占存儲空間 : 一個變量一個字節(jié)一個變量一個字節(jié)字符變量字符變量一個字符變量只能包含一個字符一個字符變量只能包含一個字符char char a,b,a,b,c ;c ;a=a=1 1; ;b=b=B B; ;c=c=c c; ; 例:例:共 62 頁 第 3333 頁a

27、a的的ASCIIASCII值為值為97 97 內(nèi)存中存儲形式內(nèi)存中存儲形式0 1 1 0 0 0 0 1例:例: a a、A A、1 10 1 1 0 0 0 0 1在在ASCII范圍以內(nèi)范圍以內(nèi),整型數(shù)據(jù)與字符型數(shù)據(jù)可以通用,整型整型數(shù)據(jù)與字符型數(shù)據(jù)可以通用,整型變量和字符型變量可以相互賦值,字符型數(shù)據(jù)可以直接與變量和字符型變量可以相互賦值,字符型數(shù)據(jù)可以直接與整型數(shù)據(jù)進行算術(shù)運算。整型數(shù)據(jù)進行算術(shù)運算。整型數(shù)整型數(shù)97 97 內(nèi)存中存儲形式內(nèi)存中存儲形式0 0 0 0 0 0 0 0低字節(jié)高字節(jié)共 62 頁 第 3434 頁main()main() char a; char a; int

28、b; int b; a= a= A ; ; b=a+25; b=a+25; printf(“%c,%d,%c,%d”,a,a,b,b); printf(“%c,%d,%c,%d”,a,a,b,b); 例:例: 計算字符計算字符A與整型數(shù)據(jù)與整型數(shù)據(jù)25的和。的和。程序運行結(jié)果:程序運行結(jié)果:A,65,Z,90共 62 頁 第 3535 頁字符串常量字符串常量字符串常量中的字符依次存儲在內(nèi)存中的一塊連續(xù)區(qū)字符串常量中的字符依次存儲在內(nèi)存中的一塊連續(xù)區(qū)域,末尾自動添加域,末尾自動添加00作為字符串的結(jié)束標志。作為字符串的結(jié)束標志。n n個字個字符組成的字符串常量符組成的字符串常量, , 占內(nèi)存空間

29、為占內(nèi)存空間為 n+1 n+1 個字節(jié)。個字節(jié)。c ch hi in na a00字符串結(jié)束標記字符串結(jié)束標記“空空”字符字符例:例:a a 串長串長 1 1 This is C stringThis is C string 串長串長1616 (空格)空格) 串長串長1 1 (不含空格)不含空格) 串長串長0 0共 62 頁 第 3636 頁在程序中,可以用字符常量或字符串常量表示單個在程序中,可以用字符常量或字符串常量表示單個字符,例如字符,例如 aa,或,或“a”a”,兩者的區(qū)別如下:,兩者的區(qū)別如下:(1 1) 字符串字符串a(chǎn)a在內(nèi)存中占在內(nèi)存中占2 2個字節(jié),而字符個字節(jié),而字符a a

30、 在內(nèi)存中占在內(nèi)存中占1 1個字節(jié)個字節(jié) 字符串字符串a(chǎn) a 字符字符aa(2 2) 不能將字符串賦給一個字符變量不能將字符串賦給一個字符變量例:例: char ch1,ch2;char ch1,ch2; ch1=a; /ch1=a; /* *正確正確* */ / ch2=a; / ch2=a; /* *錯誤錯誤* */ /a0a共 62 頁 第 3737 頁1.1.以下不合法的變量名為:以下不合法的變量名為: (A) _123 (B) IF (C) e4 (D)float(A) _123 (B) IF (C) e4 (D)float2.2.指出指出下列字符串的長度下列字符串的長度及輸出內(nèi)容及

31、輸出內(nèi)容: “ 054 054 ” “x56x56”cta cta ” “ntbabntbab” 3 輸出輸出 ,輸出輸出V”c a6 輸出輸出 ab十進制為86對應”V”“ab0efg”“ab011efg”2 ab6 ab efg十進制為9對應ASCII為”t”練 習共 62 頁 第 3838 頁算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式1.1.算術(shù)運算符算術(shù)運算符 2.2.算術(shù)表達式:算術(shù)表達式: 由算術(shù)運算符、常數(shù)、變量、函數(shù)和圓括號組成。由算術(shù)運算符、常數(shù)、變量、函數(shù)和圓括號組成。 應注意:左右括號必須配對,多層括號都用圓括號表示。應注意:左右括號必須配對,多層括號都用圓括號表示。

32、例如:例如: a+b+ aa+b+ a* *b/c+2.8b/c+2.83.3.優(yōu)先級:優(yōu)先級:高于高于4.4.結(jié)合性:結(jié)合性:“左結(jié)合性左結(jié)合性”或稱為或稱為“自左至右的結(jié)合方向自左至右的結(jié)合方向”即運算對即運算對象先與左邊的運算符結(jié)合。象先與左邊的運算符結(jié)合。 例如:例如:a - b + ca - b + c 注意注意: /: /是除法運算符。當兩個整數(shù)相除時為整除。是除法運算符。當兩個整數(shù)相除時為整除。 9/2=4; -9/2=-4; (9/2=4; -9/2=-4; (若有一個是負數(shù)若有一個是負數(shù), ,采取向零取整采取向零取整) ) % %是取余數(shù)運算符是取余數(shù)運算符, ,只能作用于兩

33、個整數(shù)。運算結(jié)果的符號與被只能作用于兩個整數(shù)。運算結(jié)果的符號與被除數(shù)的符號一致。除數(shù)的符號一致。 9%2=1 ; -9%2=-1 ; 9%-2=1; 9%2=1 ; -9%2=-1 ; 9%-2=1; 運算符是描述各種操作的運算符是描述各種操作的符號。符號。共 62 頁 第 3939 頁符號符號說明說明優(yōu)先級優(yōu)先級結(jié)合性結(jié)合性算術(shù)表達式算術(shù)表達式+-單目取正單目取正單目取負單目取負1414從右到左從右到左a=+8b=-a*/%乘乘除除取余取余131313從左到右從左到右a=12*5.5b=14/6.5c=12%5+-加加減減1212從左到右從左到右a=15+8.5b=18-8.5基本算術(shù)運算符

34、基本算術(shù)運算符共 62 頁 第 4040 頁例例: 將下列數(shù)學表達式將下列數(shù)學表達式寫成符合寫成符合C語言規(guī)則的表達式語言規(guī)則的表達式. )sinsin(sinzyxbacba(a+b+c)/(sqrt(a)+b*( sin(x)+sin(y)+sin(z) 表達式必須書寫在一行,其中表達式必須書寫在一行,其中sqrt(a)和和sin(x)、sin(y)、sin(z)都是數(shù)學函數(shù)的引用,表達式中用了都是數(shù)學函數(shù)的引用,表達式中用了三層括號,以保證表達式的運算順序。三層括號,以保證表達式的運算順序。 強調(diào)強調(diào): 對對C語言表達式的理解和掌握,除了要嚴格遵循表達語言表達式的理解和掌握,除了要嚴格遵

35、循表達式構(gòu)成的規(guī)則,還要加強對表達式含義的理解,掌握運算符式構(gòu)成的規(guī)則,還要加強對表達式含義的理解,掌握運算符的優(yōu)先級和結(jié)合規(guī)則。在此基礎(chǔ)上才能靈活地運用表達式,的優(yōu)先級和結(jié)合規(guī)則。在此基礎(chǔ)上才能靈活地運用表達式,有效地對實際問題進行描述。有效地對實際問題進行描述。共 62 頁 第 4141 頁常用的數(shù)學庫函數(shù):常用的數(shù)學庫函數(shù): 平方根函數(shù):平方根函數(shù):sqrt(x),sqrt(x),計算計算sqrt(4.0)sqrt(4.0)的值為的值為2.02.0絕對值函數(shù):絕對值函數(shù):fabs(x)fabs(x)冪函數(shù):冪函數(shù): pow(x.n),pow(x.n),計算計算x xn n指數(shù)函數(shù):指數(shù)函

36、數(shù): exp(x)exp(x),計算,計算e ex x以以e e為底的對數(shù)函數(shù)為底的對數(shù)函數(shù)log(x),log(x),計算計算ln x ln x 調(diào)用數(shù)學函數(shù)時,要求在源文件中包含頭文件調(diào)用數(shù)學函數(shù)時,要求在源文件中包含頭文件math.h.math.h.#include “math.h”#include “math.h”共 62 頁 第 4242 頁賦值運算符和賦值表達式賦值運算符和賦值表達式1.1.一般賦值運算符:一般賦值運算符:= =賦值表達式:由賦值運算符將一個變量和一個表達式賦值表達式:由賦值運算符將一個變量和一個表達式連接起來的式子。連接起來的式子。形式:形式:變量名變量名= =常

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

38、ouble 型數(shù)據(jù)賦給型數(shù)據(jù)賦給 float 變量時,截取變量時,截取其前面其前面 7 位有效數(shù)字,存放到位有效數(shù)字,存放到 float 變量的存變量的存儲單元儲單元 (32) 位中。但應注意數(shù)值范圍不能溢出。位中。但應注意數(shù)值范圍不能溢出。 將一個將一個 float 型數(shù)據(jù)賦給型數(shù)據(jù)賦給 double 變量時,數(shù)值變量時,數(shù)值不變,有效位數(shù)擴展到不變,有效位數(shù)擴展到 16 位,在內(nèi)存中以位,在內(nèi)存中以 64 位位 (bit) 存儲。存儲。共 62 頁 第 4444 頁 在定義變量時為其指定值。在定義變量時為其指定值。初始化不是在編譯初始化不是在編譯時進行時進行,而是在程序運行時完成的而是在程

39、序運行時完成的.例如:例如:int a=5;int a=5;變量的初始化變量的初始化int a,b=5,c=5;int a;int a;a=5;a=5;int a=b=c=5;int a,b,c;b=5;c=5;共 62 頁 第 4545 頁結(jié)果會是什么?結(jié)果會是什么?共 62 頁 第 4646 頁例1:main() int a; double b=3.5; a=b+2.1; printf(“a=%d”,a); 運行結(jié)果:a=5共 62 頁 第 4747 頁#include #include main()main() int c=15,h=20,s; int c=15,h=20,s; s=1/

40、2 s=1/2* *1515* *20;20; printf(s=%d,s); printf(s=%d,s); 運行結(jié)果:運行結(jié)果:共 62 頁 第 4848 頁復合賦值運算符復合賦值運算符 復合賦值運算符:復合賦值運算符: 在賦值符在賦值符“=”之前加上其它運算符之前加上其它運算符 共有共有10種復合賦值運算符種復合賦值運算符: += ,=, (算術(shù)運算有關(guān))(算術(shù)運算有關(guān)) , &, =, |= (與位運算有關(guān))(與位運算有關(guān)) 例:例:int a=1, b=2, c=2; double x=1.5,y=2,z=2; c*=a-b; c-c*(a-b) 2*(1-2)=-2 int

41、型型 z-=x+y; z=z-(x+y) 2.0-(1.5+2.0)=-1.5 double型型共 62 頁 第 4949 頁逗號運算符逗號運算符:即:即“,” 優(yōu)先級:所有運算符中級別優(yōu)先級:所有運算符中級別最低的運算符最低的運算符。逗號表達式逗號表達式 形式:形式:表達式表達式1 1,表達式,表達式2 2,表達式,表達式n n 求解過程:順次求解表達式求解過程:順次求解表達式1 1,表達式,表達式22 最后求解表達式最后求解表達式n n。 表達式值:逗號表達式的值為表達式表達式值:逗號表達式的值為表達式n n的值。的值。 結(jié)合性結(jié)合性: :左結(jié)合左結(jié)合例如:例如:a=3a=3* *5,a5

42、,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表達式的值10共 62 頁 第 5050 頁(1) (1) 優(yōu)先級優(yōu)先級 當若干個運算符同時出現(xiàn)在表達式中時,當若干個運算符同時出現(xiàn)在表達式中時,優(yōu)先級規(guī)定了優(yōu)先級規(guī)定了運算的先后次序運算的先后次序。優(yōu)先級有。優(yōu)先級有1515級。級。 C C語言把圓括號作為運算符,規(guī)定它的優(yōu)先級最高語言把圓括號作為運算符,規(guī)定它的優(yōu)先級最高(15(15級級) ),從而保證優(yōu)先運算圓括號內(nèi)的式子,逗號運算符的級別,從而保

43、證優(yōu)先運算圓括號內(nèi)的式子,逗號運算符的級別最低,規(guī)定為最低,規(guī)定為1 1級。級。(2) (2) 結(jié)合性結(jié)合性 當若干個具有當若干個具有相同優(yōu)先級相同優(yōu)先級的運算符相鄰出現(xiàn)在表達式中的運算符相鄰出現(xiàn)在表達式中時時, ,結(jié)合性規(guī)定了運算的先后次序結(jié)合性規(guī)定了運算的先后次序。分為。分為“從左到右從左到右”和和“從右到左從右到左”兩個結(jié)合方向。兩個結(jié)合方向。 大多數(shù)運算符的結(jié)合方向為大多數(shù)運算符的結(jié)合方向為 “ “從左到右從左到右”; 單目運算符、賦值運算符和條件運算符的結(jié)合方向單目運算符、賦值運算符和條件運算符的結(jié)合方向 “ “從右從右到左到左”(單目運算符是指作用于一個操作對象的運算符(單目運算符

44、是指作用于一個操作對象的運算符) )。(3 3)雙目運算符兩邊運算對象的類型必須一致。)雙目運算符兩邊運算對象的類型必須一致。共 62 頁 第 5151 頁形式:形式:l自動進行自動進行-隱式轉(zhuǎn)換隱式轉(zhuǎn)換 整型、實型和字符型可以混合運算整型、實型和字符型可以混合運算,系統(tǒng)自動轉(zhuǎn)換系統(tǒng)自動轉(zhuǎn)換成占內(nèi)存字節(jié)數(shù)最大的操作數(shù)類型。成占內(nèi)存字節(jié)數(shù)最大的操作數(shù)類型。l 強制進行強制進行-顯式轉(zhuǎn)換顯式轉(zhuǎn)換 根據(jù)需要將某一個表達式的值的類型強制轉(zhuǎn)換為根據(jù)需要將某一個表達式的值的類型強制轉(zhuǎn)換為用戶指定的類型。用戶指定的類型。提示:提示:取值范圍小的類型轉(zhuǎn)換為取值類型大的類型是安全的;反之取值范圍小的類型轉(zhuǎn)換為取

45、值類型大的類型是安全的;反之則不安全。會丟失信息或損失精度。則不安全。會丟失信息或損失精度。 應恰當選取數(shù)據(jù)類型以保證數(shù)值運算的正確性,如果確實需要應恰當選取數(shù)據(jù)類型以保證數(shù)值運算的正確性,如果確實需要進行不同數(shù)據(jù)類型之間運算時,采用強制類型轉(zhuǎn)換,顯示的表達程進行不同數(shù)據(jù)類型之間運算時,采用強制類型轉(zhuǎn)換,顯示的表達程序員的意圖。序員的意圖。共 62 頁 第 5252 頁轉(zhuǎn)換規(guī)則:轉(zhuǎn)換規(guī)則: int unsigned int long int unsigned long int double short , char float(1) float 型數(shù)據(jù)一律轉(zhuǎn)換成型數(shù)據(jù)一律轉(zhuǎn)換成double 型

46、數(shù)據(jù)。型數(shù)據(jù)。(2) char 和和short int 型數(shù)據(jù)一律轉(zhuǎn)換成型數(shù)據(jù)一律轉(zhuǎn)換成 int 型數(shù)據(jù)型數(shù)據(jù) 即使兩個操作數(shù)類型相同,但只要它們同屬即使兩個操作數(shù)類型相同,但只要它們同屬 char , short int 或或 float 類型,則轉(zhuǎn)換一定發(fā)生。類型,則轉(zhuǎn)換一定發(fā)生。(類型提升)。類型提升)。其他類型將根據(jù)參與運算的操作數(shù)類型由低向高的方向轉(zhuǎn)換。其他類型將根據(jù)參與運算的操作數(shù)類型由低向高的方向轉(zhuǎn)換。豎直方向的轉(zhuǎn)換表示那些一定豎直方向的轉(zhuǎn)換表示那些一定要發(fā)生的轉(zhuǎn)換;橫向表示操作要發(fā)生的轉(zhuǎn)換;橫向表示操作數(shù)的類型轉(zhuǎn)換的方向。數(shù)的類型轉(zhuǎn)換的方向。優(yōu)先級低的向優(yōu)先級高的轉(zhuǎn)換優(yōu)先級低的

47、向優(yōu)先級高的轉(zhuǎn)換共 62 頁 第 5353 頁已知:已知:int i; long e; float f; double d; f = 10 + a + i * f - d / e 注意注意:運算過程中的類型轉(zhuǎn)換:運算過程中的類型轉(zhuǎn)換不是不是變量變量本身數(shù)據(jù)類型的轉(zhuǎn)換。本身數(shù)據(jù)類型的轉(zhuǎn)換。共 62 頁 第 5454 頁強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換 將表達式的值轉(zhuǎn)換為指定類型。將表達式的值轉(zhuǎn)換為指定類型。 形式:(類型名)表達式形式:(類型名)表達式例如:例如:( double)(a+b)( double)(a+b) 說明:說明: () 表達式應用括號括起表達式應用括號括起例如:例如: (int)(x

48、+y) ; 將將x+y的值轉(zhuǎn)換為整型的值轉(zhuǎn)換為整型 (int)x+y; 將將x的值轉(zhuǎn)換為整型的值轉(zhuǎn)換為整型 () 在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量類型未發(fā)生變化。量,原來變量類型未發(fā)生變化。例如:例如:float x=8.6 ; int y; y=(int)x ;共 62 頁 第 5555 頁例:分析下列程序的運行結(jié)果例:分析下列程序的運行結(jié)果.#include stdio.hmain() int a=12,b=3; float x=18.5,y=4.6; printf(%fn,(float)(a*b)/2); printf(%d

49、n,(int)x%(int)y);共 62 頁 第 5656 頁作用作用:使變量的值增加或減,如:使變量的值增加或減,如:i , i (使用之使用之前前,先使,先使i的值加(減)的值加(減)1)i, i (使用之(使用之后后,使,使i的值加(減)的值加(減)1) +i 先執(zhí)行先執(zhí)行i=i+1,再使用,再使用i的值的值 i+ 先使用先使用i的值,再執(zhí)行的值,再執(zhí)行i=i+1例如:例如:int a=1 , b; b=+a ; b=a+ ;說明:說明:(1 1)+、- - -為單目運算符為單目運算符(2 2)+ + 、- - -只能用于變量,而不能用于只能用于變量,而不能用于常量常量或或表達式表達式

50、。 例如:例如:10+10+,(,(x+y)+x+y)+, +a, b+ , +a, b+ 中合法的為中合法的為? ?(3 3)自增、自減運算符為)自增、自減運算符為右結(jié)合性右結(jié)合性(即自右至左)。(即自右至左)。 例如:例如:a+ a+ (a+a+) 共 62 頁 第 5757 頁main() int i=3,j=3; i+; +j; printf(“i=%d,j=%d”,i,j);(4)單獨作一個語句使用時,兩種形式的結(jié)果一樣。單獨作一個語句使用時,兩種形式的結(jié)果一樣。(5)當出現(xiàn)在其它表達式中時,兩種形式結(jié)果不同。當出現(xiàn)在其它表達式中時,兩種形式結(jié)果不同。main() int i=1,j

51、=1,m,n; m=i+; n=+j; printf(i=%d,m=%dn j=%d,n=%d,i,m,j,n);共 62 頁 第 5858 頁i=2;k=i+i+i+;執(zhí)行完分號執(zhí)行完分號再自增再自增i=?k=?算一算?(6) 運算符組合問題運算符組合問題 C 編譯系統(tǒng)在處理時盡可能多地編譯系統(tǒng)在處理時盡可能多地 (自左向右自左向右) 將將若干個字符組成一個運算符。為避免誤解,最好采若干個字符組成一個運算符。為避免誤解,最好采取大家都能理解的寫法。取大家都能理解的寫法。共 62 頁 第 5959 頁(7) 函數(shù)實參求解順序問題函數(shù)實參求解順序問題在多數(shù)系統(tǒng)中對函數(shù)參數(shù)的求值順序是在多數(shù)系統(tǒng)中

52、對函數(shù)參數(shù)的求值順序是自右而左自右而左。以下這種寫法是不提倡的。以下這種寫法是不提倡的。例如:例如:main() int a=2,sum; sum=(+a)+(+a); printf(“%d %dn”,a+,+a);不同的編譯環(huán)境下會產(chǎn)生不同的結(jié)果,應盡量少用。共 62 頁 第 6060 頁例:分析下列程序例:分析下列程序.#include stdio.h #include math.h #define PI 3.1415926main() int a=2,r; float s,z; char c; r=012; c=c+a; c+; s=PI*r*r; z=sqrt(a); printf(“s=%f,z=%f,c=%c”,s,z,c); 共 62 頁 第 6161 頁 sizeof 運算符 sizeof 10L

溫馨提示

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

評論

0/150

提交評論