第02章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式_第1頁(yè)
第02章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式_第2頁(yè)
第02章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式_第3頁(yè)
第02章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式_第4頁(yè)
第02章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩98頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第2章 數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式教學(xué)目標(biāo)教學(xué)目標(biāo) 掌握掌握C語(yǔ)言的字符集、關(guān)鍵字和標(biāo)識(shí)符語(yǔ)言的字符集、關(guān)鍵字和標(biāo)識(shí)符 理解理解C語(yǔ)言的數(shù)據(jù)類(lèi)型語(yǔ)言的數(shù)據(jù)類(lèi)型 理解字符型和整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式理解字符型和整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式 掌握基本類(lèi)型數(shù)據(jù)的常量的表示方法掌握基本類(lèi)型數(shù)據(jù)的常量的表示方法 掌握基本類(lèi)型變量的定義和使用掌握基本類(lèi)型變量的定義和使用 掌握數(shù)據(jù)類(lèi)型轉(zhuǎn)換的規(guī)則以及強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法掌握數(shù)據(jù)類(lèi)型轉(zhuǎn)換的規(guī)則以及強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法 掌握各種運(yùn)算符的使用用法及其優(yōu)先級(jí)和結(jié)合性掌握各種運(yùn)算符的使用用法及其優(yōu)先級(jí)和結(jié)合性 掌握字符數(shù)據(jù)輸入輸出函數(shù)掌握字符數(shù)據(jù)輸入輸出函數(shù)getcha

2、r和和putchar的用法的用法掌握格式輸入輸出函數(shù)掌握格式輸入輸出函數(shù)scanf和和printf的用法,理解輸?shù)挠梅?,理解輸入輸出界面設(shè)計(jì)的重要性,掌握簡(jiǎn)單輸入輸出界面設(shè)入輸出界面設(shè)計(jì)的重要性,掌握簡(jiǎn)單輸入輸出界面設(shè)計(jì)方法計(jì)方法目目 錄錄2.1 C語(yǔ)言的標(biāo)識(shí)符和關(guān)鍵字語(yǔ)言的標(biāo)識(shí)符和關(guān)鍵字2.2 C語(yǔ)言的基本數(shù)據(jù)類(lèi)型語(yǔ)言的基本數(shù)據(jù)類(lèi)型2.3 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式2.4 數(shù)據(jù)的輸入輸出數(shù)據(jù)的輸入輸出2.1 C語(yǔ)言的標(biāo)識(shí)符和關(guān)鍵字大寫(xiě)、小寫(xiě)英文字母各大寫(xiě)、小寫(xiě)英文字母各26個(gè)個(gè)阿拉伯?dāng)?shù)字阿拉伯?dāng)?shù)字10個(gè)個(gè)運(yùn)算符、標(biāo)點(diǎn)符號(hào)及其他字符運(yùn)算符、標(biāo)點(diǎn)符號(hào)及其他字符30個(gè)個(gè) + - * / % =

3、! & | ; : ? , .“ ( ) # _ 空格空格集外字符可用集內(nèi)若干字符表示,如集外字符可用集內(nèi)若干字符表示,如用用pi表示表示源程序注釋中可以包含字符集以外的字符源程序注釋中可以包含字符集以外的字符字符串作為數(shù)據(jù)也可以包含字符集以外的字符字符串作為數(shù)據(jù)也可以包含字符集以外的字符 標(biāo)識(shí)符變量名、函數(shù)名、數(shù)組名、類(lèi)型名等的命名變量名、函數(shù)名、數(shù)組名、類(lèi)型名等的命名:由大小寫(xiě)字母、數(shù)字和下劃線組成,且首字符必須是字母由大小寫(xiě)字母、數(shù)字和下劃線組成,且首字符必須是字母或下劃線,不能與關(guān)鍵字同名。或下劃線,不能與關(guān)鍵字同名。合法的標(biāo)識(shí)符合法的標(biāo)識(shí)符 MyName、Value、_12、

4、b_tree、abm、sum非法的標(biāo)識(shí)符非法的標(biāo)識(shí)符 6ab、$ab、a3.5、case標(biāo)識(shí)符區(qū)分大小寫(xiě),其有效長(zhǎng)度與標(biāo)識(shí)符區(qū)分大小寫(xiě),其有效長(zhǎng)度與C編譯系統(tǒng)有關(guān)編譯系統(tǒng)有關(guān)標(biāo)識(shí)符應(yīng)體現(xiàn)標(biāo)識(shí)符應(yīng)體現(xiàn)“”原則,注重可讀性原則,注重可讀性 關(guān)鍵字編程語(yǔ)言預(yù)定義的具有專(zhuān)門(mén)用途的編程語(yǔ)言預(yù)定義的具有專(zhuān)門(mén)用途的標(biāo)識(shí)符,不允許用作用戶的標(biāo)識(shí)符。標(biāo)識(shí)符,不允許用作用戶的標(biāo)識(shí)符。2.2 C語(yǔ)言的基本數(shù)據(jù)類(lèi)型程序處理的對(duì)象,分為常量和變量。程序處理的對(duì)象,分為常量和變量。用于描述程序中的數(shù)據(jù)。用于描述程序中的數(shù)據(jù)?;緮?shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型:C語(yǔ)言預(yù)定義的數(shù)據(jù)類(lèi)型,包括整型、語(yǔ)言預(yù)定義的數(shù)據(jù)類(lèi)型,包括整型、字符型

5、、實(shí)型和空類(lèi)型字符型、實(shí)型和空類(lèi)型定義數(shù)據(jù)類(lèi)型:定義數(shù)據(jù)類(lèi)型:用戶按編程需要定義的數(shù)據(jù)類(lèi)型,包用戶按編程需要定義的數(shù)據(jù)類(lèi)型,包括數(shù)組、指針、結(jié)構(gòu)體、共用體和枚舉括數(shù)組、指針、結(jié)構(gòu)體、共用體和枚舉int 整型整型 char 字符型字符型float 單精度浮點(diǎn)型單精度浮點(diǎn)型 double 雙精度浮點(diǎn)型雙精度浮點(diǎn)型 常量程序執(zhí)行過(guò)程中,其值不能被改變的量。程序執(zhí)行過(guò)程中,其值不能被改變的量。和和。不做說(shuō)明,直接使用的常量。如:不做說(shuō)明,直接使用的常量。如:12,34.5。整型常量、實(shí)型常量、字符型常量和字符整型常量、實(shí)型常量、字符型常量和字符串常量。串常量。經(jīng)說(shuō)明或定義后才能使用的常量。經(jīng)說(shuō)明或定義

6、后才能使用的常量。 符號(hào)常量有名字的常量。有名字的常量。須先定義后使用須先定義后使用。使用常量說(shuō)明符使用常量說(shuō)明符const 使用編譯預(yù)處理命令使用編譯預(yù)處理命令 const double pi=3.1415926; #define PI 3.1415926可讀、一致、易維護(hù)可讀、一致、易維護(hù) 變 量在程序執(zhí)行過(guò)程中其值可以被改變的量。在程序執(zhí)行過(guò)程中其值可以被改變的量。變量類(lèi)型變量類(lèi)型變量名變量名變量的值變量的值變量的指針變量的指針(變量在內(nèi)存中的位置變量在內(nèi)存中的位置) 變量的定義作用:作用:指明變量的類(lèi)型、名字。指明變量的類(lèi)型、名字。格式:格式: 類(lèi)型名類(lèi)型名 變量名變量名1,變量名變量

7、名2,變量名變量名n;例例1: int n;該語(yǔ)句定義該語(yǔ)句定義(或聲明或聲明)了一個(gè)名為了一個(gè)名為n的整型變量,變量的整型變量,變量n 占用占用4字字節(jié)內(nèi)存,節(jié)內(nèi)存,&n是變量是變量n的指針,即變量的指針,即變量n在內(nèi)存中的位置。在內(nèi)存中的位置。 例:例: int year,month,day; double x1,x2,x3; long sum,average,total; 變量的定義說(shuō)明:說(shuō)明:變量定義不是可執(zhí)行語(yǔ)句,應(yīng)置于可執(zhí)行語(yǔ)句前。變量定義不是可執(zhí)行語(yǔ)句,應(yīng)置于可執(zhí)行語(yǔ)句前。同一變量不可重復(fù)定義。同一變量不可重復(fù)定義。變量名以簡(jiǎn)短、見(jiàn)名知意、見(jiàn)名知型為優(yōu)。變量名以簡(jiǎn)短、見(jiàn)名

8、知意、見(jiàn)名知型為優(yōu)。應(yīng)按變量的取值范圍選擇變量類(lèi)型,以占用內(nèi)存應(yīng)按變量的取值范圍選擇變量類(lèi)型,以占用內(nèi)存少、操作簡(jiǎn)便為優(yōu)。少、操作簡(jiǎn)便為優(yōu)。C語(yǔ)言沒(méi)有提供字符串類(lèi)型,字符串是用字符型數(shù)語(yǔ)言沒(méi)有提供字符串類(lèi)型,字符串是用字符型數(shù)組或指針來(lái)處理的。組或指針來(lái)處理的。 變量的初值變量的初值:變量的初值:在首次使用變量前,變量的取值。在首次使用變量前,變量的取值。置變量初值:置變量初值:在定義變量時(shí),直接初始化:在定義變量時(shí),直接初始化: int n=3; float x=12.5; int a,b=n+1,c=18; /*僅初始化部分變量?jī)H初始化部分變量*/在定義變量后,用賦值語(yǔ)句賦初值:在定義變量

9、后,用賦值語(yǔ)句賦初值: float pi; pi=3.14159;變量定義后,若未指定初值,則其初值或變量定義后,若未指定初值,則其初值或取取0或或取隨取隨機(jī)值機(jī)值,由所分配的存儲(chǔ)器種類(lèi)決定。詳見(jiàn)第,由所分配的存儲(chǔ)器種類(lèi)決定。詳見(jiàn)第5章。章。 變量的使用取變量的值稱(chēng)為取變量的值稱(chēng)為。對(duì)變量賦值與引用統(tǒng)稱(chēng)為對(duì)變量的操作或使用。對(duì)變量賦值與引用統(tǒng)稱(chēng)為對(duì)變量的操作或使用。變量一旦定義,即可多次使用:變量一旦定義,即可多次使用:int n=3,s,t;s=n; /*取變量取變量n的值,對(duì)變量的值,對(duì)變量s賦值賦值*/ scanf(%d,&t); /*將輸入整數(shù)存入變量將輸入整數(shù)存入變量t*/

10、/*&t表示取變量表示取變量t的指針(地址)的指針(地址)*/ 基本數(shù)據(jù)類(lèi)型學(xué)習(xí)數(shù)據(jù)類(lèi)型,應(yīng)關(guān)注其占用的內(nèi)存字節(jié)數(shù)、取值范圍及學(xué)習(xí)數(shù)據(jù)類(lèi)型,應(yīng)關(guān)注其占用的內(nèi)存字節(jié)數(shù)、取值范圍及所支持的操作。所支持的操作?;緮?shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型int用于描述整數(shù)用于描述整數(shù)占用占用4字節(jié)內(nèi)存字節(jié)內(nèi)存(在在VC+中中)取值范圍是取值范圍是-21474836482147483647支持的操作包括加、減、乘、除等運(yùn)算支持的操作包括加、減、乘、除等運(yùn)算:整型、實(shí)型和字符型整型、實(shí)型和字符型 整數(shù)類(lèi)型描述整數(shù)。描述整數(shù)。雙字節(jié)整型:雙字節(jié)整型:short int,unsigned short int。四字節(jié)整型

11、:四字節(jié)整型:int,unsigned int,long int,unsigned long int。八字節(jié)整型:有些八字節(jié)整型:有些C語(yǔ)言編譯系統(tǒng)支持,如語(yǔ)言編譯系統(tǒng)支持,如VC+的的_ _int64。類(lèi)型說(shuō)明符類(lèi)型說(shuō)明符位數(shù)位數(shù)數(shù)的范圍數(shù)的范圍基本型基本型int短整型短整型short2字節(jié)字節(jié)長(zhǎng)整型長(zhǎng)整型long4字節(jié)字節(jié)2字節(jié)字節(jié)4字節(jié)字節(jié) 整數(shù)類(lèi)型例如:例如:整數(shù)整數(shù)13在內(nèi)存中實(shí)際存放的情況在內(nèi)存中實(shí)際存放的情況 整數(shù)類(lèi)型 整型常量整型常量可用整型常量可用十進(jìn)制、八進(jìn)制、十六進(jìn)制十進(jìn)制、八進(jìn)制、十六進(jìn)制表示表示。由由09數(shù)字組成,除表示正負(fù)數(shù)的字符外,第一個(gè)數(shù)字不數(shù)字組成,除表示正負(fù)

12、數(shù)的字符外,第一個(gè)數(shù)字不能是能是0(整數(shù)整數(shù)0除外除外)。例如:。例如: 110,+12,-25,0,1289 +(正正)號(hào)可以省略。號(hào)可以省略。由數(shù)字由數(shù)字07數(shù)字組成,且以數(shù)字組成,且以0開(kāi)頭。例如:開(kāi)頭。例如: 012,056376以以0X(x)開(kāi)頭,由數(shù)字開(kāi)頭,由數(shù)字09和字母和字母a(A)f(F)組成。例如:組成。例如: 0 x1abCD,0X02a5,0 xABCFD213 整型常量整型常量可用后綴來(lái)修飾:整型常量可用后綴來(lái)修飾:以以 或或 后綴修飾的整數(shù)為長(zhǎng)整數(shù)。例如:后綴修飾的整數(shù)為長(zhǎng)整數(shù)。例如: 2 ,023 ,025678983以以 或或 后綴修飾的整數(shù)為無(wú)符號(hào)整數(shù)后綴修飾

13、的整數(shù)為無(wú)符號(hào)整數(shù)。例如:。例如: 6 ,045 ,0F91789后綴后綴 (u)和和 (l)可以組合使用,表示無(wú)符號(hào)長(zhǎng)整型數(shù)可以組合使用,表示無(wú)符號(hào)長(zhǎng)整型數(shù)。例如:例如: 0FFFFFF96,120000若整型常量未明確指定為長(zhǎng)整型或無(wú)符號(hào)整型,則其類(lèi)型由若整型常量未明確指定為長(zhǎng)整型或無(wú)符號(hào)整型,則其類(lèi)型由編譯系統(tǒng)在編譯時(shí)依據(jù)它的取值自動(dòng)識(shí)別。編譯系統(tǒng)在編譯時(shí)依據(jù)它的取值自動(dòng)識(shí)別。 整型數(shù)據(jù)的表示用原碼表示,即其二進(jìn)制數(shù)表示。用原碼表示,即其二進(jìn)制數(shù)表示。用補(bǔ)碼表示。用補(bǔ)碼表示。正數(shù)的補(bǔ)碼:與其原碼相同。正數(shù)的補(bǔ)碼:與其原碼相同。負(fù)數(shù)的補(bǔ)碼:由其相應(yīng)的正數(shù)的原碼的各位逐位求反負(fù)數(shù)的補(bǔ)碼:由其

14、相應(yīng)的正數(shù)的原碼的各位逐位求反后在最低位加后在最低位加1而得到。而得到。例如:若用雙字節(jié)整型,則例如:若用雙字節(jié)整型,則1和和-1的補(bǔ)碼分別是的補(bǔ)碼分別是0000000000000001,1111111111111111。#include int main(void) int a,b,c,d; /*指定a、b、c、d為整型變量*/ unsigned u; /*指定為無(wú)符號(hào)整型變量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,b+u=%dn,c,d); 可以看到不同種類(lèi)的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算可以看到不同種類(lèi)的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 運(yùn)行結(jié)果運(yùn)

15、行結(jié)果: a+u=22,b+u=-14示例示例 整型變量的定義與使用整型變量的定義與使用 整型變量的定義及應(yīng)用若有語(yǔ)句:若有語(yǔ)句:u=a+b;情況會(huì)怎樣?情況會(huì)怎樣?若按若按%u輸出,則輸出,則u=65524涉及到的問(wèn)題:數(shù)據(jù)類(lèi)型轉(zhuǎn)換。涉及到的問(wèn)題:數(shù)據(jù)類(lèi)型轉(zhuǎn)換。 整型變量的定義及應(yīng)用#include int main(void)int a,b; a=32767; b=a+1; printf(%d,%dn,a,b);數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納納-3276832767范圍內(nèi)的數(shù),無(wú)法表示大于范圍內(nèi)的數(shù),無(wú)法表示大于32767或小于或小于-327

16、68的數(shù)。遇此情況就發(fā)生的數(shù)。遇此情況就發(fā)生“溢出溢出”。運(yùn)行結(jié)果:運(yùn)行結(jié)果: 32767,-32768例例2.3 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 整型變量的定義及應(yīng)用 實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型(實(shí)型實(shí)型)又稱(chēng)浮點(diǎn)型又稱(chēng)浮點(diǎn)型,用于描述實(shí)數(shù)。,用于描述實(shí)數(shù)??茖W(xué)記數(shù)法,即科學(xué)記數(shù)法,即 m10e 其中其中稱(chēng)為尾數(shù),稱(chēng)為尾數(shù), 稱(chēng)為階碼。稱(chēng)為階碼。僅存尾數(shù)和階碼,如僅存尾數(shù)和階碼,如3.14159*101存儲(chǔ)為:存儲(chǔ)為:實(shí)型數(shù)據(jù)不連續(xù),無(wú)法精確表示每個(gè)實(shí)數(shù),只能用實(shí)實(shí)型數(shù)據(jù)不連續(xù),無(wú)法精確表示每個(gè)實(shí)數(shù),只能用實(shí)型數(shù)據(jù)近似表達(dá)實(shí)數(shù)。型數(shù)據(jù)近似表達(dá)實(shí)數(shù)。 實(shí)數(shù)類(lèi)型float:?jiǎn)尉葘?shí)型單精度實(shí)型dou

17、ble:雙精度實(shí)型雙精度實(shí)型long double:長(zhǎng)雙精度實(shí)型長(zhǎng)雙精度實(shí)型位數(shù)位數(shù)數(shù)的范圍數(shù)的范圍有效數(shù)字有效數(shù)字float32double64long double128 單精度占單精度占4字節(jié)內(nèi)存單元字節(jié)內(nèi)存單元; 雙精度占雙精度占8字節(jié)內(nèi)存單元。字節(jié)內(nèi)存單元。 實(shí)型常量實(shí)型常量實(shí)型常量(或稱(chēng)浮點(diǎn)常量或稱(chēng)浮點(diǎn)常量)的表示形式:的表示形式:定點(diǎn)數(shù)形式:定點(diǎn)數(shù)形式:由由09、小數(shù)點(diǎn)和正負(fù)號(hào)組成。如:小數(shù)點(diǎn)和正負(fù)號(hào)組成。如: 0.1234,253.6,0.0,.205,-78.指數(shù)形式指數(shù)形式(科學(xué)表示法科學(xué)表示法):以以10的指數(shù)形式表示。的指數(shù)形式表示。如:如: 12.3E12 /* 12

18、.31012 */ 0.2333e-12 /* 0.233310-12 */注意:在注意:在 或或 的前面必須有數(shù)字,且在的前面必須有數(shù)字,且在E或或e之后的之后的指數(shù)部分必須是整數(shù)。例如:指數(shù)部分必須是整數(shù)。例如: e10,E5,.e5,1.0e3.5 都是不合法的實(shí)數(shù)。都是不合法的實(shí)數(shù)。規(guī)范的指數(shù)形式:規(guī)范的指數(shù)形式:,例如:,例如: 1.23E3/* 12.3102 */ 實(shí)型常量帶后綴帶后綴f或或F的浮點(diǎn)常量是單精度浮點(diǎn)數(shù)的浮點(diǎn)常量是單精度浮點(diǎn)數(shù)(float型型)帶后綴帶后綴d、D或無(wú)后綴的浮點(diǎn)常量是雙精度浮點(diǎn)數(shù)或無(wú)后綴的浮點(diǎn)常量是雙精度浮點(diǎn)數(shù)(double型型)帶后綴帶后綴l、L結(jié)尾

19、的浮點(diǎn)常量是長(zhǎng)雙精度浮點(diǎn)數(shù)結(jié)尾的浮點(diǎn)常量是長(zhǎng)雙精度浮點(diǎn)數(shù)(long double型型) 0.12f,12.3E12f,0.12D,0.12, 12.3E12,3.5L,12.3E12L C編譯系統(tǒng)將浮點(diǎn)型數(shù)據(jù)都作為編譯系統(tǒng)將浮點(diǎn)型數(shù)據(jù)都作為來(lái)處理!來(lái)處理!#include int main(void)float a,b; a = 123456.789e5; b = a + 20 ; printf(a=%f,b=%fn,a,b); printf(a=%e,b=%en,a,b);一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不

20、準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失丟失”小的數(shù)。小的數(shù)。a=12345678848.000000,b=12345678848.000000a=1.234568e+10,b=1.234568e+10例例2.4 浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差 實(shí)型變量的定義及應(yīng)用不同編譯器對(duì)實(shí)型不同編譯器對(duì)實(shí)型變量的有效數(shù)字長(zhǎng)度的限制。變量的有效數(shù)字長(zhǎng)度的限制。在在VC6.0中中, 單精度一般為單精度一般為, 雙精度雙精度 實(shí)型變量的定義及應(yīng)用3.4(10

21、381038)1.7( 1030810308)a=123456.664062b=1234567.750000c=12345679.000000d=123456792.000000分析程序分析程序: int main(void) float a,b,c,d; a=123456.666; b=1234567.777; c=12345678.888; d=123456789.999; printf(a=%fnb=%fnc=%fnd=%fn,a,b,c,d); 分析程序分析程序: #include#includeint main(void) float a,b,c; a=10 * 3.4e1; b=1

22、0 * 3.4e37; c=10 * 3.4e38; printf(a=%fnb=%fnc=%fn,a,b,c); printf(a=%enb=%enc=%en,a,b,c); a=340.000000b=339999995214436425000000000000000000000.0 (整數(shù)位為整數(shù)位為39位位)c=+INFc=3.400000e+02c=3.400000e+38c=+INF 實(shí)型變量的定義及應(yīng)用 字符類(lèi)型描述單個(gè)字符數(shù)據(jù)。描述單個(gè)字符數(shù)據(jù)。采用采用ASCII編碼編碼(見(jiàn)附錄見(jiàn)附錄)表示,占用一字節(jié)內(nèi)表示,占用一字節(jié)內(nèi)存。存。ASCII編碼是正整數(shù)且只使用了一個(gè)字節(jié)的低編碼

23、是正整數(shù)且只使用了一個(gè)字節(jié)的低7位二進(jìn)位二進(jìn)制位,最高位為制位,最高位為0。為了便于字符數(shù)據(jù)的處理以及一字節(jié)整型數(shù)據(jù)的表達(dá)為了便于字符數(shù)據(jù)的處理以及一字節(jié)整型數(shù)據(jù)的表達(dá)和處理,和處理,C語(yǔ)言允許把語(yǔ)言允許把char型數(shù)據(jù)當(dāng)作整型數(shù)據(jù),因此,型數(shù)據(jù)當(dāng)作整型數(shù)據(jù),因此,C語(yǔ)言允許用語(yǔ)言允許用signed和和unsigned修飾修飾char,即可以有即可以有signed char和和unsigned char類(lèi)型。類(lèi)型。 位數(shù)位數(shù)數(shù)的范圍數(shù)的范圍char8 字符型常量字符常量:字符常量:一對(duì)一對(duì)括起來(lái)的單個(gè)字符。括起來(lái)的單個(gè)字符。合法的字符常量:合法的字符常量: a ,A, ,1 , ,&不

24、合法的字符常量:不合法的字符常量: , 原因是原因是單引號(hào)已用作字符常量的定界符單引號(hào)已用作字符常量的定界符,反斜杠字符是反斜杠字符是轉(zhuǎn)義序列的開(kāi)始標(biāo)志轉(zhuǎn)義序列的開(kāi)始標(biāo)志。字符常量的表示:字符常量的表示:機(jī)內(nèi)用該字符的機(jī)內(nèi)用該字符的ASCII編碼表示。編碼表示。 字符型常量表示無(wú)法直接用單引號(hào)表示無(wú)法直接用單引號(hào)括起來(lái)括起來(lái)的字符常量的字符常量(主要是主要是控制符控制符) 。以以 開(kāi)始,后跟一個(gè)字符或一個(gè)整型常量來(lái)表示一開(kāi)始,后跟一個(gè)字符或一個(gè)整型常量來(lái)表示一個(gè)字符。其中整型常量為八進(jìn)制或十六進(jìn)制數(shù),取值范個(gè)字符。其中整型常量為八進(jìn)制或十六進(jìn)制數(shù),取值范圍為圍為0255。八進(jìn)制數(shù)的開(kāi)頭。八進(jìn)制

25、數(shù)的開(kāi)頭0可省,十六進(jìn)制數(shù)應(yīng)以可省,十六進(jìn)制數(shù)應(yīng)以X或或x開(kāi)頭。開(kāi)頭。032 x99 24 x56 0 可讀性差可讀性差 t n 可讀性強(qiáng)可讀性強(qiáng)分析程序分析程序: : #includeint main(void) char c1,c2,c3; c1=101; c2=x42; c3=; printf(“c1=%cnc2=%cnc3=%cn,c1,c2,c3); printf(“This is “character example”n”); printf(“This is “character example”n”);若將若將c1值改為值改為,c2值改為值改為,c3值改值改為為A,則程序運(yùn)行輸出

26、什么樣的結(jié)果?,則程序運(yùn)行輸出什么樣的結(jié)果? 字符型變量的定義及應(yīng)用 將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的應(yīng)的放到存儲(chǔ)單元中。放到存儲(chǔ)單元中。 這樣使這樣使和和之間可以通用。一個(gè)字之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。出。 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法#include int main(void) char c1,c2; c1=97; c2=98; pri

27、ntf(%c %cn,c1,c2); printf(%d %dn,c1,c2); 在第在第3和第和第4行中,將整數(shù)行中,將整數(shù)97和和98分別賦給分別賦給c1和和c2,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ),它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句:句: c1a;c2b; 因?yàn)橐驗(yàn)閍和和b的的ASCII碼為碼為97和和98運(yùn)行結(jié)果:運(yùn)行結(jié)果: a b 97 98分析程序分析程序 向字符變量賦以整數(shù)。向字符變量賦以整數(shù)。 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法#include int main(void)char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c %

28、c,c1,c2);程序的作用是將兩個(gè)小寫(xiě)字母程序的作用是將兩個(gè)小寫(xiě)字母a和和b轉(zhuǎn)換成大寫(xiě)轉(zhuǎn)換成大寫(xiě)字母字母A和和B。從。從ASCII代碼表中可以看到每一個(gè)代碼表中可以看到每一個(gè)小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的ASCII碼大碼大32。C語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。 運(yùn)行結(jié)果:運(yùn)行結(jié)果: 分析程序:分析程序:大小寫(xiě)字母的轉(zhuǎn)換大小寫(xiě)字母的轉(zhuǎn)換 若若c1, c2的取值的取值范圍超出了范圍超出了ASCII碼表碼表的值,會(huì)產(chǎn)生什么后果?的值,會(huì)產(chǎn)生什么后果? 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法運(yùn)行結(jié)果:運(yùn)行結(jié)果:c1= ,

29、c2= , c3= , c4=#include int main(void) char c1,c2,c3,c4; c1=256; c2=257; c3=-1; c4=-2; c2=c2-32; printf(c1=%c,c2=%c,c3=%c,c4=%cn,c1,c2,c3,c4); 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 1 256相當(dāng)于相當(dāng)于ASCII碼的碼的2550值。值。 取值分段,以取值分段,以256為模重復(fù)為模重復(fù) 從從256開(kāi)始,依次得新取開(kāi)始,依次得新取ASCII碼的值。碼的值。ASCII碼ASCII碼ASCII碼2561 0255256511思考:思考:若有若有c1=c1

30、256;c2=c2 256;則結(jié)果怎樣?則結(jié)果怎樣?在在C語(yǔ)言中如何實(shí)現(xiàn)英文字母大小寫(xiě)的轉(zhuǎn)換語(yǔ)言中如何實(shí)現(xiàn)英文字母大小寫(xiě)的轉(zhuǎn)換? 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 #include int main(void) int i; char c; i=32769; c=a; printf (c=%c, c=%dn, c, c); printf (i=%c, i=%dn, i, i); 運(yùn)行結(jié)果運(yùn)行結(jié)果: c=a , c=97 i= ,i=-32767分析程序分析程序: 字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 字符串常量用雙引號(hào)括起來(lái)的若干個(gè)字符。存儲(chǔ)時(shí),字符串用雙引號(hào)括起來(lái)的若干個(gè)字符。存

31、儲(chǔ)時(shí),字符串的尾部系統(tǒng)自動(dòng)添加一個(gè)的尾部系統(tǒng)自動(dòng)添加一個(gè)0,表示字符串結(jié)束。,表示字符串結(jié)束。0稱(chēng)為字符串稱(chēng)為字符串結(jié)束符。結(jié)束符。a stutent 含轉(zhuǎn)義字符,占含轉(zhuǎn)義字符,占12字節(jié)字節(jié) 空串,占空串,占1字節(jié)字節(jié) 結(jié)果為:結(jié)果為: 占占9字節(jié)字節(jié)(一個(gè)漢字占一個(gè)漢字占2字節(jié)字節(jié))類(lèi)型:前者是字符串常量,后者是字符型常量。類(lèi)型:前者是字符串常量,后者是字符型常量。存儲(chǔ):前者占兩個(gè)字節(jié),后者占一個(gè)字節(jié)。即:存儲(chǔ):前者占兩個(gè)字節(jié),后者占一個(gè)字節(jié)。即:a 其存放值為其存放值為0 x6100,占兩個(gè)字節(jié)占兩個(gè)字節(jié)a 其存放值為其存放值為0 x61,占一個(gè)字節(jié)占一個(gè)字節(jié)a是字符常量,是字符常量,a

32、是字符串常量!是字符串常量! 空值型用用void表示表示描述描述函數(shù)沒(méi)有返回值:詳見(jiàn)第函數(shù)沒(méi)有返回值:詳見(jiàn)第5章章函數(shù)沒(méi)有參數(shù):詳見(jiàn)第函數(shù)沒(méi)有參數(shù):詳見(jiàn)第5章章無(wú)類(lèi)型指針:詳見(jiàn)第無(wú)類(lèi)型指針:詳見(jiàn)第7章章 數(shù)據(jù)類(lèi)型轉(zhuǎn)換不同類(lèi)型的數(shù)據(jù)做混合運(yùn)算時(shí),應(yīng)不同類(lèi)型的數(shù)據(jù)做混合運(yùn)算時(shí),應(yīng),再做運(yùn)算。,再做運(yùn)算。數(shù)據(jù)類(lèi)型轉(zhuǎn)換的分類(lèi):數(shù)據(jù)類(lèi)型轉(zhuǎn)換的分類(lèi):(也稱(chēng)也稱(chēng)):由系統(tǒng)按類(lèi)型:由系統(tǒng)按類(lèi)型轉(zhuǎn)換規(guī)則自動(dòng)完成。對(duì)于賦值與非賦值表達(dá)式來(lái)轉(zhuǎn)換規(guī)則自動(dòng)完成。對(duì)于賦值與非賦值表達(dá)式來(lái)說(shuō),自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則是不同的。說(shuō),自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則是不同的。(也稱(chēng)也稱(chēng)):由程序員在程由程序員在程序中用類(lèi)型轉(zhuǎn)換運(yùn)算符明確指明的轉(zhuǎn)換操作

33、序中用類(lèi)型轉(zhuǎn)換運(yùn)算符明確指明的轉(zhuǎn)換操作。通。通常,當(dāng)使用自動(dòng)類(lèi)型轉(zhuǎn)換不能滿足要求時(shí),才需常,當(dāng)使用自動(dòng)類(lèi)型轉(zhuǎn)換不能滿足要求時(shí),才需要在程序中使用強(qiáng)制類(lèi)型轉(zhuǎn)換。要在程序中使用強(qiáng)制類(lèi)型轉(zhuǎn)換。 非賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換按保值原則按保值原則先把精度低的操作數(shù)轉(zhuǎn)成與另一操作先把精度低的操作數(shù)轉(zhuǎn)成與另一操作數(shù)相同精度的操作數(shù)后再做運(yùn)算。數(shù)相同精度的操作數(shù)后再做運(yùn)算。字符型或短整型數(shù)自動(dòng)轉(zhuǎn)成整型字符型或短整型數(shù)自動(dòng)轉(zhuǎn)成整型(int)數(shù)數(shù)單精度實(shí)型數(shù)自動(dòng)轉(zhuǎn)成雙精度實(shí)型數(shù)單精度實(shí)型數(shù)自動(dòng)轉(zhuǎn)成雙精度實(shí)型數(shù)其余情況,僅當(dāng)兩個(gè)操作數(shù)的類(lèi)型不同時(shí),才將表其余情況,僅當(dāng)兩個(gè)操作數(shù)的類(lèi)型不同時(shí),才將表示范圍小的數(shù)

34、據(jù)類(lèi)型轉(zhuǎn)成與另一操作數(shù)相同的數(shù)據(jù)示范圍小的數(shù)據(jù)類(lèi)型轉(zhuǎn)成與另一操作數(shù)相同的數(shù)據(jù)類(lèi)型。類(lèi)型。 intunsignedlongunsigned longdouble 非賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換double float高低高低 longunsignedint char, short 非賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換3+2.5f:因兩個(gè)操作數(shù)的類(lèi)型不同,故要將它們轉(zhuǎn)因兩個(gè)操作數(shù)的類(lèi)型不同,故要將它們轉(zhuǎn)成相同的成相同的double類(lèi)型后再運(yùn)算,結(jié)果為類(lèi)型后再運(yùn)算,結(jié)果為5.5。a*2+2.5f先算先算a*2:將字符將字符a轉(zhuǎn)換為整型數(shù)轉(zhuǎn)換為整型數(shù)97與整型數(shù)與整型數(shù)2相乘,相乘,得整型數(shù)得整型數(shù)

35、194;再算再算194+2.5f:將整型數(shù):將整型數(shù)194和和float型數(shù)型數(shù)2.5f都轉(zhuǎn)成都轉(zhuǎn)成double型數(shù)后,做加法,得型數(shù)后,做加法,得196.5。如如-3+2u的結(jié)果并非的結(jié)果并非-1,而是,而是unsigned型的數(shù)據(jù)型的數(shù)據(jù)4294967295。 賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換若賦值運(yùn)算符右邊表達(dá)式的數(shù)據(jù)類(lèi)型與其左邊變量的類(lèi)型不一致若賦值運(yùn)算符右邊表達(dá)式的數(shù)據(jù)類(lèi)型與其左邊變量的類(lèi)型不一致但兼容,則但兼容,則。將實(shí)型數(shù)賦給整型變量時(shí),僅取其整數(shù)部分賦給整將實(shí)型數(shù)賦給整型變量時(shí),僅取其整數(shù)部分賦給整型變量。若其整數(shù)部分的值超過(guò)整型變量的取值范型變量。若其整數(shù)部分的值超過(guò)整型變量

36、的取值范圍,則賦值結(jié)果出錯(cuò)。圍,則賦值結(jié)果出錯(cuò)。將整型數(shù)賦給實(shí)型變量時(shí),將整型數(shù)轉(zhuǎn)成實(shí)型數(shù)后,將整型數(shù)賦給實(shí)型變量時(shí),將整型數(shù)轉(zhuǎn)成實(shí)型數(shù)后,再賦給實(shí)型變量。再賦給實(shí)型變量。將將double型數(shù)據(jù)賦給型數(shù)據(jù)賦給float型變量時(shí),要注意數(shù)值范型變量時(shí),要注意數(shù)值范圍,溢出時(shí)賦值就出錯(cuò)。圍,溢出時(shí)賦值就出錯(cuò)。 賦值表達(dá)式計(jì)算過(guò)程的自動(dòng)類(lèi)型轉(zhuǎn)換將字符型數(shù)據(jù)賦給整型變量時(shí)將字符型數(shù)據(jù)賦給整型變量時(shí)無(wú)符號(hào)字符數(shù)據(jù):低位不變,高位補(bǔ)無(wú)符號(hào)字符數(shù)據(jù):低位不變,高位補(bǔ)0后賦值。后賦值。有符號(hào)字符數(shù)據(jù):若為正,與無(wú)符號(hào)字符的轉(zhuǎn)換規(guī)則相同;有符號(hào)字符數(shù)據(jù):若為正,與無(wú)符號(hào)字符的轉(zhuǎn)換規(guī)則相同;若為負(fù),則高位補(bǔ)若為負(fù)

37、,則高位補(bǔ)1后再賦值。后再賦值。將無(wú)符號(hào)整型或長(zhǎng)整型數(shù)賦給整型變量時(shí),若在整將無(wú)符號(hào)整型或長(zhǎng)整型數(shù)賦給整型變量時(shí),若在整型的取值范圍,則不會(huì)出錯(cuò);否則賦值結(jié)果出錯(cuò)。型的取值范圍,則不會(huì)出錯(cuò);否則賦值結(jié)果出錯(cuò)。若表達(dá)式的計(jì)算結(jié)果類(lèi)型的表達(dá)范圍大于被賦值的變量的數(shù)據(jù)若表達(dá)式的計(jì)算結(jié)果類(lèi)型的表達(dá)范圍大于被賦值的變量的數(shù)據(jù)表達(dá)范圍,或表達(dá)式的計(jì)算結(jié)果的精度高于被賦值的變量的精表達(dá)范圍,或表達(dá)式的計(jì)算結(jié)果的精度高于被賦值的變量的精度,則度,則VC+6.0編譯器會(huì)給出警告,希望用戶處理編譯器會(huì)給出警告,希望用戶處理(如強(qiáng)制類(lèi)型如強(qiáng)制類(lèi)型轉(zhuǎn)換等轉(zhuǎn)換等)。 強(qiáng)制類(lèi)型轉(zhuǎn)換 (type)表達(dá)式表達(dá)式先算表達(dá)式的值

38、,再將表達(dá)式的值的類(lèi)型強(qiáng)制轉(zhuǎn)換為由先算表達(dá)式的值,再將表達(dá)式的值的類(lèi)型強(qiáng)制轉(zhuǎn)換為由類(lèi)型名類(lèi)型名type規(guī)定的數(shù)據(jù)類(lèi)型。規(guī)定的數(shù)據(jù)類(lèi)型。設(shè)設(shè)int a=7,b=2; float x; 則則x=a/b /* x為為3.0f */ x=(float)a/b /* x為為3.5f */ x=(float)(a/b) /* x為為3.0f */通常不必做強(qiáng)制類(lèi)型轉(zhuǎn)換,但當(dāng)自動(dòng)類(lèi)型轉(zhuǎn)換影響表達(dá)式求值通常不必做強(qiáng)制類(lèi)型轉(zhuǎn)換,但當(dāng)自動(dòng)類(lèi)型轉(zhuǎn)換影響表達(dá)式求值的精度或不能完成相應(yīng)運(yùn)算時(shí),才須使用強(qiáng)制類(lèi)型轉(zhuǎn)換。例如,的精度或不能完成相應(yīng)運(yùn)算時(shí),才須使用強(qiáng)制類(lèi)型轉(zhuǎn)換。例如,(int)13.5%(int)3.5。2.3

39、 運(yùn)算符和表達(dá)式運(yùn)算符運(yùn)算符(也稱(chēng)操作符也稱(chēng)操作符):描述對(duì)數(shù)據(jù)的操作。描述對(duì)數(shù)據(jù)的操作。操作數(shù):操作數(shù):運(yùn)算符操作運(yùn)算符操作的數(shù)據(jù)的數(shù)據(jù),可為常量和變量,也可為其他操,可為常量和變量,也可為其他操作符的運(yùn)算結(jié)果。例如:作符的運(yùn)算結(jié)果。例如: A+B 稱(chēng)稱(chēng)A和和B為操作數(shù),而把字符為操作數(shù),而把字符“+”稱(chēng)為加法運(yùn)算符。稱(chēng)為加法運(yùn)算符。運(yùn)算符按功能分:運(yùn)算符按功能分:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符等。輯運(yùn)算符和位運(yùn)算符等。運(yùn)算符按操作數(shù)的個(gè)數(shù)分:運(yùn)算符按操作數(shù)的個(gè)數(shù)分:一元一元(目目)運(yùn)算符、二元運(yùn)算符、二元(目目)運(yùn)算符和運(yùn)算符

40、和三元三元(目目)運(yùn)算符。運(yùn)算符。運(yùn)算符的優(yōu)先級(jí):運(yùn)算符的優(yōu)先級(jí):運(yùn)算符的運(yùn)算優(yōu)先關(guān)系,其意義和作用與數(shù)運(yùn)算符的運(yùn)算優(yōu)先關(guān)系,其意義和作用與數(shù)學(xué)中的運(yùn)算優(yōu)先級(jí)相同。學(xué)中的運(yùn)算優(yōu)先級(jí)相同。 C運(yùn)算符簡(jiǎn)介(共有13類(lèi))1. 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 +, , , /, % , 等等3. 邏輯運(yùn)算符邏輯運(yùn)算符 !, &, 2. 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 , =, =, !=4. 位運(yùn)算符位運(yùn)算符 , , , , &5. 賦值運(yùn)算符賦值運(yùn)算符 = 及擴(kuò)充賦值運(yùn)算符及擴(kuò)充賦值運(yùn)算符6. 條件運(yùn)算符條件運(yùn)算符 ? :7. 逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符 ,8. 指針運(yùn)算符指針運(yùn)算符 *, &9. 求

41、字節(jié)數(shù)運(yùn)算符求字節(jié)數(shù)運(yùn)算符 sizeof 10. 強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 (類(lèi)型類(lèi)型) 11. 分量運(yùn)算符分量運(yùn)算符 , -12. 下標(biāo)運(yùn)算符下標(biāo)運(yùn)算符 13. 其它運(yùn)算符其它運(yùn)算符 如函數(shù)的調(diào)用如函數(shù)的調(diào)用( ) 運(yùn)算符的結(jié)合性若運(yùn)算符優(yōu)先級(jí)相同,則其運(yùn)算順序由運(yùn)算符的結(jié)合性確定。若運(yùn)算符優(yōu)先級(jí)相同,則其運(yùn)算順序由運(yùn)算符的結(jié)合性確定。一個(gè)運(yùn)算符對(duì)其操作數(shù)按一個(gè)運(yùn)算符對(duì)其操作數(shù)按的順序執(zhí)行所規(guī)定的的順序執(zhí)行所規(guī)定的運(yùn)算。例如:運(yùn)算。例如: 18-36先取先取18,再取,再取36,然后做減法運(yùn)算。,然后做減法運(yùn)算。一個(gè)運(yùn)算符對(duì)其操作數(shù)按一個(gè)運(yùn)算符對(duì)其操作數(shù)按的順序執(zhí)行所規(guī)定的的順序

42、執(zhí)行所規(guī)定的運(yùn)算。例如:運(yùn)算。例如: a=-3先取先取3,進(jìn)行,進(jìn)行“求負(fù)求負(fù) ”運(yùn)算后,將結(jié)果賦給運(yùn)算后,將結(jié)果賦給“變量變量a。 運(yùn)算符的目數(shù)一元一元(目目)運(yùn)算符:運(yùn)算符:一個(gè)運(yùn)算符只能對(duì)一個(gè)操作數(shù)進(jìn)行操作。例一個(gè)運(yùn)算符只能對(duì)一個(gè)操作數(shù)進(jìn)行操作。例如,如,-5中的負(fù)號(hào)運(yùn)算符。中的負(fù)號(hào)運(yùn)算符。二元二元(目目)運(yùn)算符:運(yùn)算符:一個(gè)運(yùn)算符要求兩個(gè)操作數(shù)。例如,一個(gè)運(yùn)算符要求兩個(gè)操作數(shù)。例如,5*10中的運(yùn)算符中的運(yùn)算符 。三元三元(目目)運(yùn)算符:運(yùn)算符:一個(gè)運(yùn)算符要求三個(gè)操作數(shù)。例如,條件運(yùn)一個(gè)運(yùn)算符要求三個(gè)操作數(shù)。例如,條件運(yùn)算符算符是唯一的三元運(yùn)算符。是唯一的三元運(yùn)算符。同一運(yùn)算符因操作數(shù)

43、的個(gè)數(shù)不同,完成不同運(yùn)算。同一運(yùn)算符因操作數(shù)的個(gè)數(shù)不同,完成不同運(yùn)算。例如,一例如,一元運(yùn)算符元運(yùn)算符*用于取變量,二元運(yùn)算符用于取變量,二元運(yùn)算符*用于乘法運(yùn)算等。用于乘法運(yùn)算等。 表 達(dá) 式表達(dá)式:表達(dá)式:由運(yùn)算符、園括號(hào)和由運(yùn)算符、園括號(hào)和操作數(shù)操作數(shù)構(gòu)成的合法式構(gòu)成的合法式子,經(jīng)過(guò)運(yùn)算應(yīng)有一個(gè)某種類(lèi)型的確定的值。子,經(jīng)過(guò)運(yùn)算應(yīng)有一個(gè)某種類(lèi)型的確定的值。操作數(shù)可以是常量、變量或函數(shù)等。操作數(shù)可以是常量、變量或函數(shù)等。用不同的運(yùn)算符可以構(gòu)成不同類(lèi)型的表達(dá)式,如算用不同的運(yùn)算符可以構(gòu)成不同類(lèi)型的表達(dá)式,如算術(shù)表達(dá)式、賦值表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式等。術(shù)表達(dá)式、賦值表達(dá)式、關(guān)系表達(dá)式、邏輯

44、表達(dá)式等。表達(dá)式書(shū)寫(xiě):表達(dá)式書(shū)寫(xiě):操作數(shù)、運(yùn)算符、圓括號(hào)之間可以加操作數(shù)、運(yùn)算符、圓括號(hào)之間可以加空格,也可以不加空格??崭?,也可以不加空格。 算術(shù)運(yùn)算符算術(shù)運(yùn)算符:算術(shù)運(yùn)算符:-(負(fù)號(hào)負(fù)號(hào))、+(正號(hào)正號(hào))、+(加加),-(減減),*(乘乘),/(除除),%(取余取余)。 正、負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)相同,右結(jié)合。正、負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)相同,右結(jié)合。 *、/、%優(yōu)先級(jí)相同,左結(jié)合。優(yōu)先級(jí)相同,左結(jié)合。 加、減運(yùn)算符的優(yōu)先級(jí)相同,左結(jié)合。加、減運(yùn)算符的優(yōu)先級(jí)相同,左結(jié)合。優(yōu)先級(jí)順序:優(yōu)先級(jí)順序: 正正、負(fù)號(hào)負(fù)號(hào) 高于高于 *、/、% 高于高于 加加、減減可用園括號(hào)改變運(yùn)算符的優(yōu)先順序可用園括號(hào)改變運(yùn)

45、算符的優(yōu)先順序,先計(jì)算園括號(hào),先計(jì)算園括號(hào)內(nèi)的值,再計(jì)算園括號(hào)外的值。內(nèi)的值,再計(jì)算園括號(hào)外的值。 算術(shù)運(yùn)算符若兩邊的操作數(shù)均為整數(shù)時(shí),則做整除運(yùn)算,即若兩邊的操作數(shù)均為整數(shù)時(shí),則做整除運(yùn)算,即只取運(yùn)算結(jié)果的整數(shù)部分。例如:只取運(yùn)算結(jié)果的整數(shù)部分。例如: 3/4 /* 0 */ 3.0/4 /*0.75*/計(jì)算兩個(gè)整型操作數(shù)相除的余數(shù)。所得余數(shù)的符號(hào)計(jì)算兩個(gè)整型操作數(shù)相除的余數(shù)。所得余數(shù)的符號(hào)與左操作數(shù)相同。例如:與左操作數(shù)相同。例如: 10%3 /* 1 */ -10%3 /*-1 */ 4%-3 /* 1 */ “%” 求余運(yùn)算符,要求參加運(yùn)算的兩數(shù)必須為整數(shù),且結(jié)果求余運(yùn)算符,要求參加運(yùn)

46、算的兩數(shù)必須為整數(shù),且結(jié)果的符號(hào)與被除數(shù)的符號(hào)相同,結(jié)果的絕對(duì)值小于除數(shù)。的符號(hào)與被除數(shù)的符號(hào)相同,結(jié)果的絕對(duì)值小于除數(shù)。 算術(shù)運(yùn)算的溢出超出對(duì)應(yīng)類(lèi)型數(shù)據(jù)的表示范圍。超出對(duì)應(yīng)類(lèi)型數(shù)據(jù)的表示范圍。若除數(shù)為若除數(shù)為0或?qū)崝?shù)運(yùn)算的結(jié)果溢出,則認(rèn)為產(chǎn)生嚴(yán)或?qū)崝?shù)運(yùn)算的結(jié)果溢出,則認(rèn)為產(chǎn)生嚴(yán)重錯(cuò)誤,并終止程序的執(zhí)行。重錯(cuò)誤,并終止程序的執(zhí)行。若結(jié)果產(chǎn)生溢出并不認(rèn)為是錯(cuò)誤,盡若結(jié)果產(chǎn)生溢出并不認(rèn)為是錯(cuò)誤,盡管結(jié)果已不正確。管結(jié)果已不正確。舉例:舉例: int n=60000; printf(“%dn”,n*n); /* -694967296 */ 此類(lèi)問(wèn)題可通過(guò)此類(lèi)問(wèn)題可通過(guò)來(lái)解決。來(lái)解決。這種溢出便于設(shè)計(jì)

47、較低級(jí)的程序,如利用整數(shù)運(yùn)算這種溢出便于設(shè)計(jì)較低級(jí)的程序,如利用整數(shù)運(yùn)算的溢出做進(jìn)位,做大整數(shù)的溢出做進(jìn)位,做大整數(shù)(232)的加和乘運(yùn)算。的加和乘運(yùn)算。 算術(shù)表達(dá)式由算術(shù)運(yùn)算符、園括號(hào)和操作數(shù)構(gòu)成的、符合由算術(shù)運(yùn)算符、園括號(hào)和操作數(shù)構(gòu)成的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子。語(yǔ)言語(yǔ)法規(guī)則的式子。設(shè)設(shè)int a=25,b=4,c=3;,求表達(dá)式的值。求表達(dá)式的值。a+b*c:表達(dá)式的值為表達(dá)式的值為37。a*-b:表達(dá)式的值為表達(dá)式的值為-100。a*- -b:因兩個(gè)負(fù)號(hào)之間有空格,此式等同于因兩個(gè)負(fù)號(hào)之間有空格,此式等同于a*(-(-b),其值為其值為100。表達(dá)式應(yīng)簡(jiǎn)明,無(wú)多余運(yùn)算符。表達(dá)式應(yīng)簡(jiǎn)明,

48、無(wú)多余運(yùn)算符。表達(dá)式中的每個(gè)變量都應(yīng)有確定的值。表達(dá)式中的每個(gè)變量都應(yīng)有確定的值。書(shū)寫(xiě)復(fù)雜表達(dá)式時(shí),可適當(dāng)增加配對(duì)的園括號(hào),指書(shū)寫(xiě)復(fù)雜表達(dá)式時(shí),可適當(dāng)增加配對(duì)的園括號(hào),指定表達(dá)式的求值順序。定表達(dá)式的求值順序。利用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)算術(shù)表達(dá)式轉(zhuǎn)換為所需類(lèi)型形式形式: (類(lèi)型名類(lèi)型名) (表達(dá)式表達(dá)式)(double) a 將將a轉(zhuǎn)換為轉(zhuǎn)換為double(int) (x+y) 將將x+y轉(zhuǎn)換為轉(zhuǎn)換為int(float) (5%3) 將將5%3轉(zhuǎn)換為轉(zhuǎn)換為float1. 括號(hào)不能省略。否則括號(hào)不能省略。否則: intx 會(huì)理解為變量會(huì)理解為變量intx. 又如又如: (int) (x+y)

49、若省略若省略: (int)x+y會(huì)變成只將會(huì)變成只將x轉(zhuǎn)成整型轉(zhuǎn)成整型。2. 轉(zhuǎn)換后的類(lèi)型數(shù)據(jù)由系統(tǒng)分配一個(gè)中間變量存放,而原變轉(zhuǎn)換后的類(lèi)型數(shù)據(jù)由系統(tǒng)分配一個(gè)中間變量存放,而原變量類(lèi)型不變。量類(lèi)型不變。 float x=2.5; int m;m=(int)x; x本身仍為實(shí)型本身仍為實(shí)型,而而(int)x是將是將變量變量x的整數(shù)部的整數(shù)部分分2賦給變量賦給變量m。 +和-運(yùn)算符一元運(yùn)算符,可置于一元運(yùn)算符,可置于變量變量前前(前置前置),也可置于也可置于變量變量后后(后置后置),用于快速實(shí)現(xiàn)變量的增,用于快速實(shí)現(xiàn)變量的增1和減和減1操作。操作。變量的類(lèi)型可以是字符型、整型、實(shí)型、枚舉類(lèi)型和指針

50、類(lèi)型。變量的類(lèi)型可以是字符型、整型、實(shí)型、枚舉類(lèi)型和指針類(lèi)型。例如,。例如,-19、(x+6)+、(b=1)+、(k+)+都是錯(cuò)誤的。都是錯(cuò)誤的。先將變量的值增先將變量的值增1(或減或減1),再將變量的值參加,再將變量的值參加運(yùn)算。運(yùn)算。先將變量的值參加運(yùn)算,再將變量的值增先將變量的值參加運(yùn)算,再將變量的值增1(或或減減1)。濫用濫用+和和-運(yùn)算符會(huì)使表達(dá)式的可讀性明顯下降。運(yùn)算符會(huì)使表達(dá)式的可讀性明顯下降。 +和-運(yùn)算符若變量的增若變量的增(減減)1運(yùn)算不加入其他表達(dá)式運(yùn)算,則前置增運(yùn)算不加入其他表達(dá)式運(yùn)算,則前置增(減減)1與后置增與后置增(減減)1的作用相同:的作用相同: int a=1

51、; a+; /* 等價(jià)于等價(jià)于a=a+1; */ /* 此時(shí)此時(shí)a+與與+a的作用相同的作用相同 */若變量的增若變量的增(減減)1運(yùn)算加入其他表達(dá)式運(yùn)算,則前置增運(yùn)算加入其他表達(dá)式運(yùn)算,則前置增(減減)1與與后置增后置增(減減)1的作用截然不同:的作用截然不同: int i=10; float x=7,y=15,v1,v2; v1=x+ + +i; /* v1為為18,i為為11,x為為8 */ v2=+y; /* v2和和y都為都為16 */ 賦值運(yùn)算符與賦值表達(dá)式右結(jié)合的雙目運(yùn)算符右結(jié)合的雙目運(yùn)算符,其優(yōu)先級(jí)比算術(shù)運(yùn)算符、,其優(yōu)先級(jí)比算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級(jí)低。關(guān)系運(yùn)算

52、符和邏輯運(yùn)算符的優(yōu)先級(jí)低。 變量變量 = 表達(dá)式表達(dá)式 注:注: 賦值表達(dá)式的左邊只能是變量賦值表達(dá)式的左邊只能是變量 左邊變量的值代表賦值表達(dá)式的值左邊變量的值代表賦值表達(dá)式的值設(shè)設(shè)a、b、c為整型變量:為整型變量: a=3+5 將將3+5的值的值8賦給賦給a b=c=a=3+5 將將3+5的值的值8賦給賦給a,再將再將a賦給賦給c,再將再將c賦給賦給b a=5+c=5 將將5賦給賦給5+c,而而5+c不是變量不是變量 a=5+(c=5) 將將5賦給賦給c,再將再將5和和c相加后的結(jié)果相加后的結(jié)果10賦給賦給a 賦值運(yùn)算符使用注意不要將賦值運(yùn)算符不要將賦值運(yùn)算符“=”與等號(hào)與等號(hào)“=”相混淆

53、相混淆。不同編譯器對(duì)賦值表達(dá)式的值的不同處理,可能使同一表達(dá)式不同編譯器對(duì)賦值表達(dá)式的值的不同處理,可能使同一表達(dá)式在不同編譯器中的運(yùn)行結(jié)果不同。在不同編譯器中的運(yùn)行結(jié)果不同。如:如: int x,s; s=(x=2)+(+x); 在在VC+ 6.0中,中,s的值為的值為6,而在,而在Dev C+ 4.9中,中,s的值為的值為5。避免上述問(wèn)題的方法是對(duì)表達(dá)式進(jìn)行分解:避免上述問(wèn)題的方法是對(duì)表達(dá)式進(jìn)行分解: int x=2,s; s=x+(+x); 在在VC+ 6.0和和Dev C+ 4.9中,中,s的值均為的值均為6。 復(fù)合賦值運(yùn)算符二元算術(shù)運(yùn)算符和位運(yùn)算符與賦值運(yùn)算符組二元算術(shù)運(yùn)算符和位運(yùn)算

54、符與賦值運(yùn)算符組合而成,優(yōu)先級(jí)和結(jié)合性與賦值運(yùn)算符相同。包括合而成,優(yōu)先級(jí)和結(jié)合性與賦值運(yùn)算符相同。包括+=、-=、*=、/=、%=、=、&=、=、|=。 變量變量 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 表達(dá)式表達(dá)式 等價(jià)于:等價(jià)于: 變量變量 = 變量變量 運(yùn)算符運(yùn)算符 (表達(dá)式表達(dá)式)簡(jiǎn)化書(shū)寫(xiě),提高表達(dá)式的目標(biāo)代碼質(zhì)量。簡(jiǎn)化書(shū)寫(xiě),提高表達(dá)式的目標(biāo)代碼質(zhì)量。: a+=b-5 等價(jià)于等價(jià)于 a=a+(b-5) a*=b-c/2 等價(jià)于等價(jià)于 a=a*(b-c/2) 關(guān)系運(yùn)算符二元運(yùn)算符,用來(lái)比較兩個(gè)操作數(shù)之間的關(guān)系,二元運(yùn)算符,用來(lái)比較兩個(gè)操作數(shù)之間的關(guān)系,其優(yōu)先級(jí)比算術(shù)運(yùn)算符低,但比賦值運(yùn)算

55、符高。共有六個(gè):其優(yōu)先級(jí)比算術(shù)運(yùn)算符低,但比賦值運(yùn)算符高。共有六個(gè): 字符型、整型、實(shí)型、枚舉類(lèi)型以字符型、整型、實(shí)型、枚舉類(lèi)型以及指針類(lèi)型及指針類(lèi)型初學(xué)者常常誤將初學(xué)者常常誤將=當(dāng)作當(dāng)作=使用。使用。 、= 、=優(yōu)先級(jí)相同優(yōu)先級(jí)相同=、!=!=優(yōu)先級(jí)相同優(yōu)先級(jí)相同優(yōu)先級(jí)高優(yōu)先級(jí)高 低低 邏輯運(yùn)算符實(shí)現(xiàn)邏輯運(yùn)算,表達(dá)復(fù)雜條件。實(shí)現(xiàn)邏輯運(yùn)算,表達(dá)復(fù)雜條件。 ! 邏輯非邏輯非(單目單目) & 邏輯與邏輯與(二目二目) | 邏輯或邏輯或(二目二目)!的優(yōu)先級(jí)最高,高于算術(shù)運(yùn)算符。的優(yōu)先級(jí)最高,高于算術(shù)運(yùn)算符。&的優(yōu)先級(jí)低于的優(yōu)先級(jí)低于!,但高于,但高于|,但兩者均比關(guān)系運(yùn)算,但兩者均

56、比關(guān)系運(yùn)算符、算術(shù)運(yùn)算符的優(yōu)先級(jí)低。符、算術(shù)運(yùn)算符的優(yōu)先級(jí)低。邏輯運(yùn)算的操作數(shù)不為邏輯運(yùn)算的操作數(shù)不為0時(shí),為邏輯真;而操作數(shù)的值為時(shí),為邏輯真;而操作數(shù)的值為0時(shí),時(shí),為邏輯假。為邏輯假。 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式優(yōu)先級(jí)最低。優(yōu)先級(jí)最低。 表達(dá)式表達(dá)式1,表達(dá)式表達(dá)式2,表達(dá)式表達(dá)式n 按從左到右的順序依次求出各表達(dá)式的值,并把最后一個(gè)表達(dá)式按從左到右的順序依次求出各表達(dá)式的值,并把最后一個(gè)表達(dá)式的值作為整個(gè)逗號(hào)表達(dá)式的值。的值作為整個(gè)逗號(hào)表達(dá)式的值。設(shè)設(shè)int a=2,b; a+=2,b=3+a:值為值為7。此時(shí),。此時(shí),a為為4,b為為7。并非所有的逗號(hào)都構(gòu)成逗號(hào)表達(dá)式。例如,并非所有的逗

57、號(hào)都構(gòu)成逗號(hào)表達(dá)式。例如,max(a+b,c+d)中,逗號(hào)只是一個(gè)分隔符。中,逗號(hào)只是一個(gè)分隔符。 條件運(yùn)算符與條件表達(dá)式唯一的三目運(yùn)算符,其優(yōu)先級(jí)僅高于賦值運(yùn)算符、唯一的三目運(yùn)算符,其優(yōu)先級(jí)僅高于賦值運(yùn)算符、復(fù)合賦值運(yùn)算符和逗號(hào)運(yùn)算符。復(fù)合賦值運(yùn)算符和逗號(hào)運(yùn)算符。 表達(dá)式表達(dá)式1 ? 表達(dá)式表達(dá)式2 : 表達(dá)式表達(dá)式3先求表達(dá)式先求表達(dá)式1的值,若為的值,若為1(即:即:),則求出表達(dá)式,則求出表達(dá)式2的值的值(不求表達(dá)式不求表達(dá)式3的值的值),并把該值作為運(yùn)算結(jié)果;否則求出,并把該值作為運(yùn)算結(jié)果;否則求出表達(dá)式表達(dá)式3的值的值(不求表達(dá)式不求表達(dá)式2的值的值),并把它作為運(yùn)算結(jié)果。,并把它

58、作為運(yùn)算結(jié)果。max=a=b?a:b;printf(%s,ab?a大于大于bn:a小于等于小于等于bn);ch=(ch=A&ch=Z)?(ch+32):ch; sizeof運(yùn)算符單目運(yùn)算符,用于計(jì)算操作數(shù)類(lèi)型或表達(dá)式的單目運(yùn)算符,用于計(jì)算操作數(shù)類(lèi)型或表達(dá)式的值占用內(nèi)存的字節(jié)數(shù)。格式為:值占用內(nèi)存的字節(jié)數(shù)。格式為: sizeof(類(lèi)型名或表達(dá)式類(lèi)型名或表達(dá)式) sizeof(int) /*4(在在32位系統(tǒng)中位系統(tǒng)中)*/sizeof(float) /*4*/sizeof(100) /*1*/sizeof(a+2.5) /*8 因因a+2.5的值為的值為double型型*/sizeof(

59、Hello)/*6 因因Hello占占6字節(jié)內(nèi)存字節(jié)內(nèi)存*/sizeof(1+2) /*4(在在32位系統(tǒng)中位系統(tǒng)中)*/sizeof(1+2) /*4(在在32位系統(tǒng)中位系統(tǒng)中)*/2.4 C語(yǔ)言的輸入輸出輸入輸出輸入輸出(I/O):程序運(yùn)行所需數(shù)據(jù)往往要從外設(shè)程序運(yùn)行所需數(shù)據(jù)往往要從外設(shè)(如鍵盤(pán)等如鍵盤(pán)等)得到,得到,程序的運(yùn)行結(jié)果通常也要輸出到外設(shè)程序的運(yùn)行結(jié)果通常也要輸出到外設(shè)(如顯示器、打印機(jī)、文件如顯示器、打印機(jī)、文件等等)。C語(yǔ)言實(shí)現(xiàn)語(yǔ)言實(shí)現(xiàn)I/O的方法:的方法:C語(yǔ)言沒(méi)有專(zhuān)門(mén)的語(yǔ)言沒(méi)有專(zhuān)門(mén)的I/O語(yǔ)句,語(yǔ)句,I/O操作通過(guò)調(diào)操作通過(guò)調(diào)用標(biāo)準(zhǔn)庫(kù)用標(biāo)準(zhǔn)庫(kù)stdio.h中聲明的庫(kù)函數(shù)

60、來(lái)實(shí)現(xiàn)。中聲明的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)。getchar:從鍵盤(pán)輸入一個(gè)字符從鍵盤(pán)輸入一個(gè)字符putchar:向顯示器輸出一個(gè)字符向顯示器輸出一個(gè)字符scanf:從鍵盤(pán)輸入基本類(lèi)型的數(shù)據(jù)從鍵盤(pán)輸入基本類(lèi)型的數(shù)據(jù)printf:向顯示器輸出基本類(lèi)型的數(shù)據(jù)向顯示器輸出基本類(lèi)型的數(shù)據(jù) 非格式化字符輸入輸出函數(shù)非格式化字符輸入函數(shù)非格式化字符輸入函數(shù)原型:原型:int getchar(void);功能:從鍵盤(pán)輸入一個(gè)字符。若調(diào)用成功,則返回功能:從鍵盤(pán)輸入一個(gè)字符。若調(diào)用成功,則返回輸入的字符,否則返回輸入的字符,否則返回EOF(-1)。例如:例如: c=getchar(); 注注.若從鍵盤(pán)輸入若從鍵盤(pán)輸入Ctrl+Z鍵,則鍵,則c得到的是得到的是EOF(-1)。非格式化字符輸出函數(shù)非格式化字符輸出函

溫馨提示

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

評(píng)論

0/150

提交評(píng)論