C語言程序設(shè)計(同名14)課件_第1頁
C語言程序設(shè)計(同名14)課件_第2頁
C語言程序設(shè)計(同名14)課件_第3頁
C語言程序設(shè)計(同名14)課件_第4頁
C語言程序設(shè)計(同名14)課件_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 C的基本數(shù)據(jù)類型及運算 2.1 標(biāo)識符 2.2 數(shù)據(jù)類型 2.3 常量 2.4 變量 2.5 運算符 2.6 表達式 2.7 數(shù)據(jù)類型, 運算符與表達式舉例 2.1 標(biāo) 識 符 正確 不正確count 1 counttest123 hi!thereHigh-balance high.balancePI a+b 說明: (1) 與有些程序設(shè)計語言的規(guī)定不同, 在C語言中, 標(biāo)識符中大小寫字母是有區(qū)別的。程序中基本上都采用小寫字母表示各種標(biāo)識符,如變量名、數(shù)組名、函數(shù)名等。書寫的各種語句也均用小寫字母,而大寫字母只用來定義宏名等,用的不多。 (2) 不同的系統(tǒng)對標(biāo)識符的長度有不同的要求,

2、有的要求為6個字符,有的允許使用8個字符,而Turbo C系統(tǒng)下的有效長度為1至32個字符。 (3) 除了少數(shù)工作單元我們用單個字符作標(biāo)識符,一般的應(yīng)做到見名知意,以提高程序的可讀性。如用sum表示和, score表示成績, max表示最大等等。 2.1.2 關(guān)鍵字 ANSI C規(guī)定了32個關(guān)鍵字(保留字),不能再用作各種標(biāo)識符。下面列出32個關(guān)鍵字:auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, registe

3、r, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while。 它們用來表示C語言本身的特定成份, 具有相應(yīng)的語義, 可構(gòu)成所有的C語言語句。 C語言還使用下列12個標(biāo)識符作為編譯預(yù)處理的命令單詞, 但使用時前面應(yīng)加“”: define, elif, else, endif, error, if, ifdef, ifndef, include, line, progma, undef。 2.2 數(shù)據(jù)類型 2.2.1 基本數(shù)據(jù)類型 1. 基本數(shù)據(jù)類

4、型 表 2.1 C基本數(shù)據(jù)類型的長度和值域 字符型(char)變量用于存貯ASCII碼字符,也可存貯8位二進制數(shù)。 整型(int)變量用于存貯整數(shù)。因其字長有限,故可表示的整數(shù)的范圍也有限。 單精度實型(float)和雙精度實型(double)變量用于存貯實數(shù),實數(shù)具有整數(shù)和小數(shù)兩部分或是帶指數(shù)的數(shù)據(jù)。表中的值域用絕對值表示。 無值型(void)有兩種用途:第一是明確地表示一個函數(shù)不返回任何值;第二是產(chǎn)生同一類型的指針。 2. 類型修飾符 除了無值類型外, 基本數(shù)據(jù)類型可以帶有各種修飾前綴。修飾符用于明確基本數(shù)據(jù)類型的含義,以準(zhǔn)確地適應(yīng)不同情況下的要求。類型修飾符種類如下: signed 有符

5、號unsigned 無符號long 長Short 短 表 2.2 C基本類型及其修飾符的所有組合 不同的計算機系統(tǒng)對各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)有不同的規(guī)定,如int型有的系統(tǒng)占16位,有的占32位。long double型有的占128位,有的占64位。 有符號(signed)和無符號(unsigned)的整型量的區(qū)別在于它們的最高位的定義不同。如果定義的是有符號的整型(signed int),C編譯程序所產(chǎn)生的代碼就設(shè)定整型數(shù)的最高位為符號位,其余位表示數(shù)值大小。如最高位為0,則該整數(shù)為正;如最高位為1,則該整數(shù)為負。例如用8位二進制表示時: 大部分計算機表示有符號數(shù)時都使用二進制補碼。原因及細節(jié)

6、將在微機原理課上學(xué)習(xí)。補碼的求法很簡單:正數(shù)補碼即原碼;負數(shù)的補碼是將其對應(yīng)原碼的各位(除符號位外)按位求反,然后加1。上述四個數(shù)用 8 位二進制表示有符號數(shù)時機內(nèi)補碼值為: 有符號整數(shù)對于許多運算都是很重要的。但是它所能表達的最大數(shù)的絕對值只是無符號數(shù)的一半。例如,32767的有符號整數(shù)表示為: 0111111111111111如果最高位設(shè)置為1,則該數(shù)就會被當(dāng)作-1。然而,如將該數(shù)定義為無符號整型(unsigned int),那么當(dāng)最高位設(shè)置為1時,它就變成了65535。 2.2.3 指針類型 指針是C語言中一個重要概念。正確而靈活地運用它,可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu);能動態(tài)分配內(nèi)存;能

7、方便地使用字符串;有效而方便地使用數(shù)組; 在調(diào)用函數(shù)時能得到多于一個的值;能直接處理內(nèi)存地址等。 指針類型迥異于前述各種數(shù)據(jù)類型,不管是簡單類型的數(shù)據(jù),還是構(gòu)造類型數(shù)據(jù),均是代表數(shù)據(jù)的,而指針類型是代表地址的。 2.3 常 量2.3.1 數(shù)值常量 1. 整型常量 整型常量也稱為整型常數(shù)或整數(shù)。 C整型常量按進制分可分為十進制整數(shù),八進制整數(shù)和十六進制整數(shù)。 1) 十進制整數(shù) 十進制整數(shù)以正負號開頭,后跟09的若干位數(shù)字構(gòu)成。如123, -456, 0等。 2) 八進制整數(shù) 八進制整數(shù)是以正負號開頭,第一位數(shù)字一定是0,后面跟07的數(shù)字。如八進制數(shù)0123,相當(dāng)于十進制數(shù)83;八進制數(shù)-012,

8、相當(dāng)于十進制數(shù)-10。 八進制數(shù)與十進制數(shù)的轉(zhuǎn)換,方法如下: 0123=182+281+380=64+16+3=83 3) 十六進制整數(shù) 十六進制整數(shù)是以正負號開頭,前兩位為0 x,后面跟09和af的數(shù)字。其中a代表10, b代表11, 其余類推。 如十六進制數(shù)0 x123,相當(dāng)于十進制數(shù)291;十六進制數(shù)-0 x12,相當(dāng)于十進制數(shù)-18。 十六進制數(shù)轉(zhuǎn)換成十進制數(shù),方法如下: 0 x123=1162+2161+3160=256+32+3=291 0 x1ab=1162+10161+11160=256+160+11=427 4) 二進制數(shù), 字節(jié), 字, 位計算機內(nèi)所有的信息均用二進制表示,

9、即計算機內(nèi)只有0和1,也只認(rèn)識由0和1組成的程序或數(shù)據(jù)。為什么在計算機中要使用二進制數(shù)呢? 因為二進制數(shù)運算規(guī)則簡單,用物理器材容易實現(xiàn),如電壓的高與低, 開關(guān)的開與關(guān),脈沖的有與無等等。 一個二進制數(shù)0或1, 稱為“位”(bit)。在計算機存貯器中,為了便于管理,常將 8 個位稱為一個“字節(jié)”(byte),每個字節(jié)存放在一個存貯單元中,每個單元賦于一個存貯地址。 計算機在處理數(shù)據(jù)時,每一個數(shù)據(jù)是一個“字”(word),字是由若干字節(jié)組成。字可以是1個字節(jié)(字符),2個字節(jié)(整數(shù)),4個字節(jié)(實數(shù),長整型數(shù)),8個字節(jié)(雙精度實數(shù))等等。 2. 單精度實型常量 1) 小數(shù)形式 一個實數(shù)可以是正

10、負號開頭,有若干位09的整數(shù),后跟一個小數(shù)點(必須有),再有若干位小數(shù)部分。如123.456, -21.37。 數(shù)12用實數(shù)表示必須寫成12.0或12.。 一個實數(shù)有數(shù)值范圍和有效位數(shù)的限制。實數(shù)的數(shù)值范圍是3.410-38|x|3.41038,當(dāng)小于3.410-38時按0對待(下溢), 而大于3.41038時則上溢,一個溢出的數(shù)是無意義的。實數(shù)僅有7位有效數(shù)字,超過七位的將是不精確的。 如1.2345678,在計算機內(nèi)僅保留為1.234567,第八位數(shù)無法保留而失去,并不是第八位向第七位四舍五入。當(dāng)上面的數(shù)要求用小數(shù)五位表示時,則表達為1.23457,即第七位向第六位四舍五入。 2) 指數(shù)形

11、式 實數(shù)的指數(shù)形式也稱為科學(xué)計數(shù)法。一個實數(shù)的指數(shù)形式分成尾數(shù)部分和指數(shù)部分。尾數(shù)部分可以是整數(shù)形式或小數(shù)形式,指數(shù)部分是一個字母“e”后跟一個整數(shù)。如123e+01,-456.78e-01, 0e0等。由于實數(shù)僅有7位有效數(shù)字,因此在內(nèi)存中用三個字節(jié)來表示尾數(shù), 用一個字節(jié)來表示指數(shù),所以指數(shù)部分用兩位整數(shù)來表示。 在書寫時“e”與“E”完全等價?!癳”前面必須有數(shù)字,“e”后面必須是整數(shù)。 3. 雙精度常量 當(dāng)一個數(shù)用實數(shù)表達時,僅有七位有效數(shù)字,用長整型表達時僅有十位有效數(shù)字,實數(shù)的數(shù)值范圍也只能小于3.41038。 當(dāng)超過以上范圍時,我們可以用雙精度常量來表達。 雙精度常量的取值范圍由

12、1.710-308|x|1.710308,有效位可達16位左右。一個數(shù)當(dāng)超過長整型數(shù)表達范圍或超過實數(shù)表達范圍時均按雙精度常量對待。一個雙精度常量在內(nèi)存中占8個字節(jié)。 長雙精度常量取值范圍在10-4931104932之間,有19位有效數(shù)字,在內(nèi)存中占16個字節(jié)。但它是由計算機系統(tǒng)決定的, 在Turbo C中,與double型一致。 2.3.2 字符常量 表 2.3 控制字符表示法 2.3.3 字符串常量 2.3.4 符號常量 1. 不帶參數(shù)的宏定義 宏定義命令define用來定義一個標(biāo)識符和一個字符串,在程序中每次遇到該標(biāo)識符時就用所定義的字符串替換它。這個標(biāo)識符叫做宏名,替換過程叫做宏替換或

13、宏展開。宏定義命令define的一般形式是: define 宏名 字符串 例如你想用PI表示數(shù)值3.14159, 可以用宏定義define來說明: define PI 3.14159這樣在編譯時,每當(dāng)在源程序中遇到PI就自動用3.14159代替,這就是宏展開。 若定義了一個宏名, 這個名字還可以做為其它宏定義的一個部分來使用。 例如: define PI 3.14159 define PI2 2*PI則在程序中出現(xiàn)的“PI2”處被“2*3.14159”來替換。 2.4 變 量 2.4.1 變量的定義 1. 變量定義變量定義的一般形式如下: 類型 變量名表; 這里,類型(type)必須是C語言的

14、有效數(shù)據(jù)類型。變量名表可以是一個或多個標(biāo)識符名,中間用逗號分隔,最后以分號結(jié)束。以下是一些變量定義的例子: int i, j, num; float a, b, sum; unsigned int ui; char c, ch, name; double x, total; 2. 說明 (1) 變量名可以是C語言中允許的合法標(biāo)識符, 用戶定義時應(yīng)遵循“見名知意”的原則,以利于程序的維護(今后所有標(biāo)識符均如此,不再重復(fù))。 (2) 每一個變量都必須進行類型說明,這樣就可以保證程序中變量的正確使用。未經(jīng)類型說明的變量在編譯時將被指出是錯誤的,也就是變量要先定義,后使用。 (3) 當(dāng)一個變量被指定為

15、某一確定類型時,將為它分配若干相應(yīng)字節(jié)的內(nèi)存空間。如char型為1字節(jié),int型為2字節(jié),float為4字節(jié),double為8字節(jié)。當(dāng)然,不同的系統(tǒng)可能稍有差異。 (4) 變量可以在程序內(nèi)的三個地方定義: 在函數(shù)內(nèi)部, 在函數(shù)的參數(shù)(形參)定義中或在所有的函數(shù)外部。由此定義的變量分別稱為局部變量, 形式參數(shù)和全局變量。在不同地方定義的變量,其作用范圍不同。在同一層次定義的變量,不能與數(shù)組、指針、函數(shù)和其它變量同名。 (5) 變量是用來存放數(shù)據(jù)的,由于數(shù)據(jù)有不同的類型,因此要定義相應(yīng)類型的變量去存放它。這些數(shù)據(jù)稱為相應(yīng)變量的值。 2.4.2 C語言中各種類型的變量 1. 整型變量 整型變量用來存

16、放整型數(shù)值。整型變量可分為:基本型(int), 短整型(short int或short),長整型(long int或long)和無符號型(unsigned int, unsigned short, unsigned long)。 前三種整型變量存貯單元的最高位為符號位。0表示為正,1表示為負。無符號型變量存貯單元的所有位均表示數(shù)值。具體可參看表2.2。 在使用整型變量時一定要注意數(shù)值的范圍,超過該變量允許的使用范圍將導(dǎo)致錯誤的結(jié)果。 2. 實型變量 實型變量分為單精度型(float)和雙精度型(double)兩類。其存放數(shù)據(jù)的差別是:單精度變量占4個字節(jié)內(nèi)存單元,有7位有效數(shù)字,數(shù)值范圍在3.

17、4e-383.4e+38之間。而雙精度變量占有8個字節(jié)內(nèi)存單元,有1516位有效數(shù)字,數(shù)值范圍在1.7e-3081.7e+308之間。 3. 字符型變量 字符型(char)變量內(nèi)存放字符型常量, 在內(nèi)存單元中僅占一個字節(jié)。 其內(nèi)存中存放的是該字符的ASCII碼, 因此字符型變量也可存貯數(shù)值范圍為0255或-128127之間的整型常數(shù)。 在C語言中,字符型與整型的界限不是很分明的,在一個字節(jié)內(nèi)是可互相轉(zhuǎn)換的。 5. 其它類型變量 C語言中無字符串變量,但可以用字符數(shù)組或字符型指針來表達字符串。另外還有指針型變量,結(jié)構(gòu)體型變量, 共用體型變量等, 這些將在后續(xù)章節(jié)中介紹。 C語言中沒有邏輯型變量,

18、 所有非零數(shù)值被認(rèn)為是邏輯“真”, 而數(shù)值零被認(rèn)為是邏輯“假”。無值型類型一般不用來說明變量, 只用在函數(shù)或指針中。 2.4.3 變量的初始化 程序中常需要對一些變量預(yù)先設(shè)置初值。 C規(guī)定, 可以在定義變量時同時使變量初始化。變量初始化只需定義變量時在變量名后面加一等號及一個常數(shù)。它的一般形式是: 類型 變量名=常數(shù); 以下是幾個示例: char ch=a; int first=0; float x=123.45; 2.5 運 算 符 (1) 算術(shù)運算符(+, -, *, /, %, +, -)。(2) 關(guān)系運算符(, =, =, !KG-*8=)。(3) 邏輯運算符(!, &, |)。(4)

19、 位運算符(, , |, , &)。(5) 賦值運算符(=, 及其雙目運算符的擴展賦值運算符)。(6) 條件運算符(? :)。(7) 逗號運算符(,)。(8) 指針運算符(*, &)。(9) 求字節(jié)數(shù)運算符(sizeof)。(10) 強制類型轉(zhuǎn)換運算符(類型)。(11) 分量運算符(, -)。(12) 下標(biāo)運算符( )。(13) 圓括號運算符( )。 2.5.1 算術(shù)運算符和賦值運算符 表 2.4 算術(shù)運算符和賦值運算符 說明: (1) +, -, *, / 與數(shù)學(xué)中運算類似, 先乘除后加減, 也就是按優(yōu)先級順序進行運算,優(yōu)先級小的先運算。要改變運算順序只要加括號就可以了,括號全部為圓括號,必

20、須注意括號的配對,它們適用于C的幾乎全部數(shù)據(jù)類型(指針類除外)的各種運算(+, -除外)。除法運算符(/)在用于兩個整型數(shù)據(jù)運算時,其運算結(jié)果也是整數(shù),余數(shù)總是被截掉。如1/2的結(jié)果是0;10/3的結(jié)果是3。 (2) 求余運算符(%)僅用于整型數(shù)據(jù),不能用于實型和雙精度實型。它的作用是取整數(shù)除法的余數(shù)。如1%2的結(jié)果是1; 10%3的結(jié)果也是1。 (3) 賦值運算符(=)是將右邊表達式的值賦給左邊的變量。 賦值運算符左邊必須是變量等有存貯單元的元素,而不能是常量或表達式。如x=x+1是合法的,即把x的值加上1后再賦給x,而x+1=x卻是非法的,因為x+1不是一個存貯單元, 不能被賦以值。賦值號

21、有別于數(shù)學(xué)中的等號,這一點是要注意的。 (4) +, -僅用于整型變量,指針變量。用于整型變量在原值上加1或減1;用于指針變量是取下一地址或上一地址。 關(guān)于指針部分的使用在第八章中介紹。 增1和減1運算符用在表達式中時,寫法是有差別的:如果運算符在操作數(shù)前面, 則在表達式“引用”該操作數(shù)前,先對其作加1或減1運算; 如果運算符在操作數(shù)之后,則先“引用”該操作數(shù),然后再對它作加1或減1運算??紤]以下程序: main( ) int x, y; x=10; y=+x; printf(%d, %dn, x, y); 運算結(jié)果為 11, 11此時y的值和x的值都為11。 然而換一種寫法: main( )

22、 int x, y; x=10; y=x+; printf(%d, %dn, x, y); 運行結(jié)果為 11, 10 此時y的值是10,而x的值自增后為11。上述兩種情況x都變成了11,而y的值卻不同。它們的差別只在于給x加1的時機不同。 此時賦值即為引用。 再如進行輸出操作時,有以下程序段: x=10; printf(x=%dn, +x); 運行結(jié)果為x=11,執(zhí)行其下一條語句時x也是11, 而程序段: x=10; printf(x=%dn, x+); (5) +, -, *, /, % 可以與賦值號=組成復(fù)合賦值運算符+=, -=, *=, /=, %=。 如a=a+b可以寫成a+=b,a

23、=a*b可以寫成a*=b。其余類推。 這樣書寫簡練,運行速度快,也提高了編譯效率。 2.5.2 關(guān)系運算符和邏輯運算符 表 2.5 關(guān)系和邏輯運算符 說明: (1) 當(dāng)關(guān)系運算符兩邊的值滿足關(guān)系時為真, 返回1; 如不滿足關(guān)系時為假,返回0。例如: x=10; printf(%dn, x=9);則輸出為1。又如: x=5; printf(%dn, x=9); 則輸出為0。 字符比較按其ASCII碼值進行, 如A, =, , 31); 運行輸出結(jié)果為0。因為兩個是同一優(yōu)先級,53的結(jié)果為1, 而11的關(guān)系不滿足,所以最后結(jié)果為0。又如: printf(%dn, 1=1135); 運行輸出結(jié)果為1

24、。因為的優(yōu)先級比=高,則111+12完全等價于10(1+12), 其結(jié)果當(dāng)然是假(即0)。 (5) 在關(guān)系和邏輯運算符組成的表達式中, 也可以像算術(shù)表達式一樣, 用圓括號來改變運算的自然優(yōu)先次序,如! 1&0其值為假,因為先執(zhí)行! 1, 然后才執(zhí)行&。然而加上圓括號! (1&0)后改變了運算順序,則執(zhí)行! 0操作結(jié)果為1,即其值為真。 (6) 在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的值時,才執(zhí)行該運算符。例如: 當(dāng)兩個邏輯量a|b時,當(dāng)a為真時則不再求b的值, 而取值為真(即1)。 當(dāng)兩個邏輯量a&b時,當(dāng)a為假,則同樣不再求b的值,

25、 而取值為假(即0)。 同理, a|b|c式中當(dāng)a為真時, 直接取值為真(即1);a&b&c式中當(dāng)a為假時,直接取值為假(即0)。此時若b, c為賦值表達式,則賦值操作就沒有進行。 (7) 邏輯運算的轉(zhuǎn)換。 !(a|b)可寫成!a&!b,而! (a&b)可寫成! a|! b。 2.5.4 條件運算符和逗號運算符 1. 條件運算符 運算符的一般形式是: 表達式1 ? 表達式2:表達式3 其含義是: 先求表達式1的值,如果為真(非零), 則求表達式2的值, 并把它作為整個表達式的值;如表達式1的值為假(零), 則求表達式3的值, 并把它作為整個表達式的值。 例如: x=10; y=x9 ? 100

26、:200; 2. 逗號運算符 逗號運算符“,”也稱順序求值運算符, 其運算優(yōu)先級為15,也是最低的,結(jié)合方向是自左至右。 逗號運算符的左邊總是不返回的,也就是說逗號右邊表達式的值才是整個表達式的值。例如: x=(y=3, y+1) 該表達式括號內(nèi)是逗號表達式,由于結(jié)合方向是自左至右, 先將3賦給y, 然后計算表達式y(tǒng)+1,其值為4,逗號左邊的值不返回,逗號右邊的值才是整個表達式的值,所以表達式的值為4,最后將4賦給x。 由于逗號運算符的級別最低, 所以以整體先求值時一般均需加圓括號。 2.5.5 其它運算符 表 2.7 其它運算符 2.5.6 運算符的優(yōu)先級和結(jié)合方向 表 2.8 C語言運算符

27、的優(yōu)先級和結(jié)合方向 表 2.8 C語言運算符的優(yōu)先級和結(jié)合方向 2.6 表 達 式 2.6.1 C的各種表達式 1. 算術(shù)表達式 算術(shù)表達式的形式如下: 算術(shù)表達式中運算對象(操作數(shù))是數(shù)值, 也可以是字符(按其ASCII碼值進行運算),運算結(jié)果(即表達式的值)是數(shù)值。如: a+b*c-d/e 2. 關(guān)系表達式 關(guān)系表達式的形式如下: 關(guān)系表達式中運算對象是數(shù)值,也可以是字符(取其ASCII碼值), 其運算結(jié)果是邏輯量,即為“真”時取1,為“假”時取0。 3. 邏輯表達式 邏輯表達式的形式如下: 邏輯表達式的運算對象是邏輯量。在C語言中無邏輯量,因此規(guī)定將非零的值按“真”對待,零值按“假”對待

28、。而運算結(jié)果為“真”時取1, 為“假”時取0。 4. 條件表達式 條件表達式的形式如下: ? : 其中表達式1的值按邏輯值對待,非零為“真”,零值為“假”。 而當(dāng)表達式1值為“真”(非零)時,條件表達式的值為表達式2的值; 而當(dāng)表達式1的值為“假”(零)時,條件表達式的值為表達式3的值。如y=x ? a: b,若x=3則y=a,若x=0,則y=b。 表達式2或表達式3還可以是另一個條件表達式, 應(yīng)注意它們是自右至左的結(jié)合方向。如ab? a: cd? c:d相當(dāng)于ab? a:(cd? c:d), 當(dāng)a=1, b=2, c=3, d=4時,此條件表達式的值等于4。 5. 逗號表達式 逗號表達式的形

29、式如下: 表達式1,表達式2, 表達式n 逗號表達式按逗號間的順序依次從左至右執(zhí)行, 但整個逗號表達式的值為最后一個逗號右邊表達式的值 6. 賦值表達式 賦值表達式是最常用的表達式, 形式如下: 賦值運算符即=,又稱為賦值號。賦值號左邊必須是變量、 數(shù)組元素等有存貯單元的元素,賦值號的右邊可以是各類表達式, 也可以是另一個賦值表達式。因此a=b=c是合法的,即相當(dāng)于a=(b=c),因為它是自右至左結(jié)合的,即c值先賦給b, b=c賦值表達式的值為b的值,然后再賦給a,整個表達式的值也為a的值。 賦值表達式的求值順序是先計算賦值號右邊表達式的值,再轉(zhuǎn)換成表達式左邊變量的類型,再進行賦值,此值也是賦

30、值表達式的值。 2.6.2 表達式中的類型轉(zhuǎn)換 轉(zhuǎn)換的規(guī)則為: (1) 轉(zhuǎn)換的結(jié)果必定是3種基本類型:int, long或double型。 因此兩個char型的數(shù)據(jù)運算,也要先轉(zhuǎn)換成int型,運算結(jié)果也是int型;只要有一個數(shù)據(jù)是float型,都要先轉(zhuǎn)換成double型,最后結(jié)果也是double型。 (2) 各類型級別由低到高的順序為char, int, unsigned, long, unsigned long, float, double。除如(1)所述要進行char或short向int, float向double的轉(zhuǎn)換外,其余類型的混合運算均按此順序由低到高自動轉(zhuǎn)換。另外,C語言規(guī)定,有

31、符號類型數(shù)據(jù)與無符號類型數(shù)據(jù)進行混合運算,結(jié)果為無符號類型。例如,int型數(shù)據(jù)和unsigned類型數(shù)據(jù)的運算結(jié)果為unsigned型。 例 2.3 考慮圖2.1中的類型轉(zhuǎn)換。 圖 2.1 類型轉(zhuǎn)換示例 例 2.4 類型轉(zhuǎn)換。 float x; int i; x=i=3.14159;則變量i的值為3, 而變量x的值為3.0而不是3, 也不是3.14159。 (3) 可以使用強制類型轉(zhuǎn)換。通過使用強制類型轉(zhuǎn)換(type), 可以強迫表達式的值轉(zhuǎn)換為某一特定類型。一般的形式是: (類型) 表達式其中類型(type)是C語言標(biāo)準(zhǔn)數(shù)據(jù)類型。 例如你想確保表達式x/2成為float型, 你可以寫成如下形式: (float)(x/2) 當(dāng)然, 如x為整型時則會丟失信息。 如寫成: (float)x/2則表達式的結(jié)果為double型。 例 2.5 整型數(shù)據(jù)相除。 程序: main( ) in

溫馨提示

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

評論

0/150

提交評論