C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(2)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(2)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(2)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(2)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(2)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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章章 c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)語(yǔ)言程序設(shè)計(jì)基礎(chǔ) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家2 回顧回顧 程序是為執(zhí)行一項(xiàng)任務(wù)而編寫的有序指令集程序是為執(zhí)行一項(xiàng)任務(wù)而編寫的有序指令集 算法是解決問(wèn)題的具體方法和步驟算法是解決問(wèn)題的具體方法和步驟 c語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn) c程序的編譯和運(yùn)行過(guò)程程序的編譯和運(yùn)行過(guò)程 編譯器將源程序轉(zhuǎn)換成機(jī)器能理解的程序編譯器將源程序轉(zhuǎn)換成機(jī)器能理解的程序 連接器用于連接相關(guān)的目標(biāo)文件以生成可執(zhí)行程序連接器用于連接相關(guān)的目標(biāo)文件以生成可執(zhí)行程序 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家3 教學(xué)目標(biāo)教學(xué)目標(biāo) 理解變量和常量的含義理解

2、變量和常量的含義 熟悉基本數(shù)據(jù)類型熟悉基本數(shù)據(jù)類型 - int、char、float 和和 double 了解了解sizeof運(yùn)算符運(yùn)算符 理解表達(dá)式理解表達(dá)式 使用算術(shù)運(yùn)算符使用算術(shù)運(yùn)算符 掌握賦值運(yùn)算符的用法掌握賦值運(yùn)算符的用法 理解類型轉(zhuǎn)換理解類型轉(zhuǎn)換 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家4 前言前言 數(shù)據(jù)是程序的處理對(duì)象數(shù)據(jù)是程序的處理對(duì)象 數(shù)據(jù)類型決定了數(shù)據(jù)對(duì)象的存儲(chǔ)形式、取值范圍以及能進(jìn)行的運(yùn)算。 數(shù)據(jù)可以由常量或變量表示。數(shù)據(jù)可以由常量或變量表示。 常量:常量:在一個(gè)變化過(guò)程中,此量的數(shù)值始終不變,我們稱它為常量。 例如:#define 符號(hào)常量名 所代表

3、的值 變量:變量:是指在程序的運(yùn)行過(guò)程中隨時(shí)可以發(fā)生變化的量。 例如:int x, float y, char z, unsigned short int, unsigned long int; 變量的定義格式:數(shù)據(jù)類型名 變量列表 特殊:const int pi=3.1415926(固定變量) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家5 c語(yǔ)言中的基本元素語(yǔ)言中的基本元素 程序程序 指令指令 標(biāo)識(shí)符標(biāo)識(shí)符 關(guān)鍵字關(guān)鍵字 常量常量 運(yùn)算符運(yùn)算符 分隔符分隔符 常量常量是在程序中保持不變的量 常量用于定義具有如下特點(diǎn)的數(shù)據(jù): 在程序中保持不變 在程序內(nèi)部頻繁使用 需要用比較簡(jiǎn)

4、單的方式替代某些值 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家6 為什么需要常量為什么需要常量 假如不使用常量,直接使用常數(shù),會(huì)有什么影響?假如不使用常量,直接使用常數(shù),會(huì)有什么影響? 程序的可讀性變差程序的可讀性變差 容易發(fā)生書寫錯(cuò)誤容易發(fā)生書寫錯(cuò)誤 修改麻煩修改麻煩 常量只能在定義時(shí)賦值,然后不能再改變其值常量只能在定義時(shí)賦值,然后不能再改變其值 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家7 為什么需要常量為什么需要常量 要避免使用幻數(shù)(要避免使用幻數(shù)(magic number) 直接使用的常數(shù)叫幻數(shù)。直接使用的常數(shù)叫幻數(shù)。 現(xiàn)象與危害:現(xiàn)象與危害: 當(dāng)

5、常數(shù)需要改變時(shí),要修改所有使用它的代碼,工作量巨大,當(dāng)常數(shù)需要改變時(shí),要修改所有使用它的代碼,工作量巨大, 還可能有遺漏。還可能有遺漏。 解決方案:解決方案: 把幻數(shù)定義為宏、把幻數(shù)定義為宏、const,或者枚舉常量。,或者枚舉常量。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家8 符號(hào)常量符號(hào)常量 在在c語(yǔ)言中,用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱之為符號(hào)常量,語(yǔ)言中,用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱之為符號(hào)常量, 常見(jiàn)的符號(hào)常量有宏常量、常見(jiàn)的符號(hào)常量有宏常量、const和枚舉常量。和枚舉常量。 宏常量的一般形式為:宏常量的一般形式為: #define #include #defi

6、ne pi 3.14159 int main(void) double s,r; r=5; s = pi * r * r; printf(area s=%f,s); return 0; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家9 符號(hào)常量符號(hào)常量 用用const修飾定義的變量為修飾定義的變量為const常量常量 const float pi = 3.1425926; const常量與宏常量相比的優(yōu)點(diǎn)是什么?常量與宏常量相比的優(yōu)點(diǎn)是什么? const常量有數(shù)據(jù)類型常量有數(shù)據(jù)類型 某些集成化調(diào)試工具可以對(duì)某些集成化調(diào)試工具可以對(duì)const常量進(jìn)行調(diào)試常量進(jìn)行調(diào)試 枚舉常量(略)

7、枚舉常量(略) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家10 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 數(shù)據(jù)屬于不同類別 africa the quick brown fox true 數(shù)據(jù) 非數(shù)值數(shù)值 整型非整型 9002.12 999 9/12/2003 2.175 123 jackie chan char 數(shù)據(jù)類型 非數(shù)值數(shù)值 整型 int short int long int double float 非整型 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家11 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 類型名類型名名稱名稱位數(shù)位數(shù)范圍范圍 (signed) char字符型字符型8-1

8、28127 unsigned char無(wú)符號(hào)字符型無(wú)符號(hào)字符型80255 (signed) short (int)短整型短整型16-3276832767 unsigned short (int) 無(wú)符號(hào)短整型無(wú)符號(hào)短整型16065535 (signed) short整型整型32-21474836482147483647 unsigned (int)無(wú)符號(hào)整型無(wú)符號(hào)整型3204294967295 (signed) long (int)長(zhǎng)整型長(zhǎng)整型32-21474836482147483647 unsigned long(int)無(wú)符號(hào)長(zhǎng)整型無(wú)符號(hào)長(zhǎng)整型3204294967295 float單精度

9、單精度323.4(10-381038)(6位精度位精度) double雙精度雙精度641.7(10-30810308)(15位精度)位精度) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家12 存儲(chǔ)方式存儲(chǔ)方式 整型常量是以補(bǔ)碼的形式存儲(chǔ)在內(nèi)存中的。整型常量是以補(bǔ)碼的形式存儲(chǔ)在內(nèi)存中的。 為什么呢? +0 原碼原碼:00000000 反碼反碼:00000000 補(bǔ)碼補(bǔ)碼:00000000 -0 原碼原碼:10000000 反碼反碼:11111111 補(bǔ)碼補(bǔ)碼:00000000 使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理。同時(shí),減法使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理。同時(shí),減法 也

10、可按加法來(lái)處理。也可按加法來(lái)處理。 讓我們?cè)囈幌拢鹤屛覀冊(cè)囈幌拢?-3=-1 2 原碼原碼:00000010 反碼反碼:00000010 補(bǔ)碼補(bǔ)碼:00000010 -3 原碼原碼:10000011 反碼反碼:11111100 補(bǔ)碼補(bǔ)碼:11111101 -1 原碼原碼:10000001 反碼反碼:11111110 補(bǔ)碼補(bǔ)碼:11111111 各個(gè)類型范圍的下限就是由補(bǔ)碼的位數(shù)得來(lái)的。各個(gè)類型范圍的下限就是由補(bǔ)碼的位數(shù)得來(lái)的。 以上例為準(zhǔn),范圍應(yīng)為:以上例為準(zhǔn),范圍應(yīng)為:11111111100000000(128個(gè))個(gè)) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家13 整型常

11、量整型常量 整型常量有三種不同的表示形式:整型常量有三種不同的表示形式: 十進(jìn)制:無(wú)前綴,無(wú)后綴十進(jìn)制:無(wú)前綴,無(wú)后綴 八進(jìn)制:在八進(jìn)制數(shù)值前面加前綴八進(jìn)制:在八進(jìn)制數(shù)值前面加前綴“0”,其數(shù)碼取值為,其數(shù)碼取值為07。例如:。例如: 023,0457,01324等等(輸出八進(jìn)制,格式控制符為輸出八進(jìn)制,格式控制符為“%o”) 十六進(jìn)制:前綴為十六進(jìn)制:前綴為“0x”或或“0 x”,其數(shù)碼取值為,其數(shù)碼取值為09、af或或af。 例如:例如:0x2a,0xa0,0xffff等等(輸出十六進(jìn)制,格式控制符為輸出十六進(jìn)制,格式控制符為 “%o”) 當(dāng)任意整型常量后跟一個(gè)字母當(dāng)任意整型常量后跟一個(gè)字

12、母u或或u時(shí),表示是無(wú)符號(hào)整型。時(shí),表示是無(wú)符號(hào)整型。 例如,例如,123u (輸出無(wú)符號(hào)整型,格式控制符為輸出無(wú)符號(hào)整型,格式控制符為“%u”) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家14 進(jìn)制轉(zhuǎn)換進(jìn)制轉(zhuǎn)換 #include int main() int a=13,y=-1; printf(a=13 ndecimal=%d,octal=%o,hex=%xn,a,a,a); printf(y=-1ndecimal=%d,octal=%o,hex=%xn,y,y,y); return 0; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家15 實(shí)型常量實(shí)型常量

13、實(shí)型常量有實(shí)型常量有2種不同的表現(xiàn)形式種不同的表現(xiàn)形式: 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成,必須要有小數(shù)點(diǎn)。十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成,必須要有小數(shù)點(diǎn)。 例如:例如:0.123,123.,123.0,0.0等。等。 指數(shù)形式:如指數(shù)形式:如123e3或或123e3都代表都代表123103。注意字母。注意字母e 或或e之前必須有數(shù)字,且之前必須有數(shù)字,且e或或e后面的指數(shù)必須為整數(shù)。規(guī)范后面的指數(shù)必須為整數(shù)。規(guī)范 化的指數(shù)形式:在字母化的指數(shù)形式:在字母e或或e之前的小數(shù)部分中,小數(shù)點(diǎn)左之前的小數(shù)部分中,小數(shù)點(diǎn)左 邊應(yīng)有一位且只能有一位非零的數(shù)字,如邊應(yīng)有一位且只能有一位非零的數(shù)字,如

14、1.23e5。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家16 實(shí)型舉例實(shí)型舉例 #include int main() float a=3.1234567890123456; double b=4.1234567890123456; printf(float a=%fn,a); printf(double b=%fn,b); printf(float-aute a=%.16fn,a); printf(double-aute b=%.16fn,b); return 0; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家17 字符型字符型 在線保險(xiǎn)單在線保險(xiǎn)單 年齡

15、年齡:_ 保險(xiǎn)總額保險(xiǎn)總額:_ 性別性別:_ 23 98340.00 m int/float char 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家18 字符型字符型 5 p $ 2 2 2 + 2 = 4 值值符號(hào)符號(hào)值值符號(hào)符號(hào)值值符號(hào)符號(hào) 0空字符空字符44,91 32空格空格45-92 33!46.93 3447/94 35#48 570 9 95- 36$58:96 37%59;97 122a z 38 x=2+2; printf(%cn,x); return 0; 19 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家20 char型與型與int型之間的

16、關(guān)系型之間的關(guān)系 #include int main(void) char ch = b; printf(%c, %dn, ch, ch); ch = b - 32; printf(%c, %dn, ch, ch); return 0; #include int main(void) char ch = b; printf(%c, %dn, ch, ch); ch = b - (a - a) ; printf(%c, %dn, ch, ch); return 0; b, 98 b, 66 b, 98 b, 66 例:小寫字母轉(zhuǎn)換為大寫字母例:小寫字母轉(zhuǎn)換為大寫字母 要學(xué)蜜蜂采百花,問(wèn)遍百家成行

17、家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家21 字符型常量字符型常量 c語(yǔ)言的字符常量是用單撇號(hào)括起來(lái)的一個(gè)字符,如語(yǔ)言的字符常量是用單撇號(hào)括起來(lái)的一個(gè)字符,如a,a, $等。等。 轉(zhuǎn)義字符:以一個(gè)字符轉(zhuǎn)義字符:以一個(gè)字符“”開頭的字符序列,代表特殊的含開頭的字符序列,代表特殊的含 義。義。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家22 例:轉(zhuǎn)義字符使用例:轉(zhuǎn)義字符使用 運(yùn)行結(jié)果運(yùn)行結(jié)果 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家 字符串字符串 字符串是用一對(duì)雙引號(hào)括起來(lái)的若干個(gè)字符。字符串是用一對(duì)雙引號(hào)括起來(lái)的若干個(gè)字符。 例如:例如:”i am a studen

18、t”(15字符字符) “b” (2字符字符) “” (1字符字符) 23 在在c語(yǔ)言中,字符串常量的長(zhǎng)度不受限制,編譯程序在處語(yǔ)言中,字符串常量的長(zhǎng)度不受限制,編譯程序在處 理字符串長(zhǎng)度時(shí)自動(dòng)在其最后加一個(gè)理字符串長(zhǎng)度時(shí)自動(dòng)在其最后加一個(gè)0(null)作為作為“字符字符 串結(jié)束標(biāo)志串結(jié)束標(biāo)志”。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家24 變量變量 程序程序 內(nèi)存內(nèi)存 編寫程序時(shí),常常需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存編寫程序時(shí),常常需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存 中,方便后面使用這個(gè)數(shù)據(jù)或者修改這個(gè)中,方便后面使用這個(gè)數(shù)據(jù)或者修改這個(gè) 數(shù)據(jù)的值。數(shù)據(jù)的值。 通常使用變量來(lái)存儲(chǔ)數(shù)據(jù)。使用變量可以

19、通常使用變量來(lái)存儲(chǔ)數(shù)據(jù)。使用變量可以 引用存儲(chǔ)在內(nèi)存中的數(shù)據(jù),并隨時(shí)根據(jù)需引用存儲(chǔ)在內(nèi)存中的數(shù)據(jù),并隨時(shí)根據(jù)需 要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。 存儲(chǔ)存儲(chǔ) rate rate * 5% 將值存儲(chǔ)為將值存儲(chǔ)為 discamt rate-discamt 10 0.5 將值存儲(chǔ)為將值存儲(chǔ)為result 9.5 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家25 聲明和使用變量聲明和使用變量 聲明變量:聲明變量: datatype variablename; 如: int age; 定義時(shí)初始化變量:定義時(shí)初始化變量: datatype variablename =

20、value; 如:int age=20; 定義后初始化變量:定義后初始化變量: variablename = value; 如:age=20; 給變量賦值,除了給一個(gè)直接的值以外,還可以通過(guò)計(jì)算獲得給變量賦值,除了給一個(gè)直接的值以外,還可以通過(guò)計(jì)算獲得 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家26 變量命名變量命名 在 c 語(yǔ)言中,變量命名需要遵循一定的規(guī)則 有效名稱有效名稱 principal cost_price marks_3 lastname city 無(wú)效名稱無(wú)效名稱 123rate currency$ discount% zip code 變量的命名規(guī)則:變量的

21、命名規(guī)則: 變量名可以由字母、數(shù)字和變量名可以由字母、數(shù)字和 _(下劃線)組合而成(下劃線)組合而成 變量名不能包含除變量名不能包含除 _ 以外的任何特殊字符,如:以外的任何特殊字符,如:%、# 、逗號(hào)、逗號(hào)、 空格等空格等 變量名必須以字母或變量名必須以字母或 _(下劃線)開頭(下劃線)開頭 變量名不能包含空白字符(換行符、空格和制表符稱為空白字符)變量名不能包含空白字符(換行符、空格和制表符稱為空白字符) c 語(yǔ)言中的某些詞(例如語(yǔ)言中的某些詞(例如 int 和和 float 等)稱為關(guān)鍵字,具有特等)稱為關(guān)鍵字,具有特 殊意義,不能用作變量名殊意義,不能用作變量名 c 語(yǔ)言區(qū)分大小寫,因

22、此變量語(yǔ)言區(qū)分大小寫,因此變量 price 與變量與變量 price 是兩個(gè)不同是兩個(gè)不同 的變量的變量 判斷下列的變量名是否正確判斷下列的變量名是否正確 aaa abc o-3 if +y _sss *x a#3 enum volatile while main 7abc 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家27 使用整型變量使用整型變量 聲明:聲明: int page_number; long int population; unsigned int age; 可按如下方式初始化:可按如下方式初始化: page_number0; int max_marks = 10

23、0; 在同一語(yǔ)句中可以聲明多個(gè)類型相同的變量:在同一語(yǔ)句中可以聲明多個(gè)類型相同的變量: int page_number, copies, paper_width; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家28 單精度浮點(diǎn)型單精度浮點(diǎn)型 float 在 c 語(yǔ)言中用于存儲(chǔ)單精度浮點(diǎn)數(shù) float 32 位-3.410-383.410+38 ,6位有效數(shù)字 聲明:聲明: float selling_price; 初始化:初始化: float selling_price = 11.3; selling_price = 65.90; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)

24、遍百家成行家29 雙精度浮點(diǎn)型雙精度浮點(diǎn)型 內(nèi)存內(nèi)存 float double 213.5671435568967 64位位 取值范圍:取值范圍:-1.710-308 1.7 10308 15 位有效數(shù)字 聲明:聲明: double pressure_level; 初始化:初始化: pressure_level = 213.5671435568967; double dvalue = 35.4; double 在 c 語(yǔ)言中用于存儲(chǔ)雙精度浮點(diǎn)數(shù) 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家30 short intintlongfloatdouble turbo c2b2b4b4

25、b8b vc+6.02b4b4b4b8b 數(shù)據(jù)類型所占的位數(shù)與機(jī)器硬件(數(shù)據(jù)類型所占的位數(shù)與機(jī)器硬件(cpu)、操作系統(tǒng)、開發(fā)環(huán))、操作系統(tǒng)、開發(fā)環(huán) 境有關(guān)。境有關(guān)。 數(shù)據(jù)類型數(shù)據(jù)類型 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家31 表達(dá)式表達(dá)式 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家32 表達(dá)式表達(dá)式 z = ( x * 2 ) + ( 5 y ) 操作數(shù)操作數(shù)操作數(shù)操作數(shù) 表達(dá)式表達(dá)式 表達(dá)式表達(dá)式表達(dá)式表達(dá)式 運(yùn)算符運(yùn)算符 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家33 表達(dá)式表達(dá)式 表達(dá)式由操作數(shù)和運(yùn)算符的組合而成表達(dá)式由操作數(shù)

26、和運(yùn)算符的組合而成 表達(dá)式中的操作數(shù)可以是變量、常量或者子表達(dá)式表達(dá)式中的操作數(shù)可以是變量、常量或者子表達(dá)式 運(yùn)算符(運(yùn)算符(p25)的主要類型有:)的主要類型有: 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 賦值運(yùn)算符賦值運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 邏輯運(yùn)算符邏輯運(yùn)算符 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家34 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 算術(shù) 一元一元 二元二元 操作數(shù)操作數(shù)運(yùn)算符 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家35 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 算術(shù) 一元一元 - + num+ num=num+1 num- num=num-1 +num -nu

27、m num+ num- 前綴前綴后綴后綴 二元二元 表達(dá)式如何計(jì)算結(jié)果 (num1=5) num2 = +num1;num1 = num1 + 1; num2 = num1; num2 = 6; num1 = 6; num2 = num1+;num2 = num1; num1 = num1 + 1; num2 = 5; num1 = 6; num2 = -num1;num1 = num1 - 1; num2 = num1; num2 = 4; num1 = 4; num2 = num1-;num2 = num1; num1 = num1 - 1; num2 = 5; num1 = 4; 要學(xué)蜜

28、蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家 除法運(yùn)算符除法運(yùn)算符 除法運(yùn)算符除法運(yùn)算符 當(dāng)符號(hào)兩邊是整數(shù)時(shí)當(dāng)符號(hào)兩邊是整數(shù)時(shí) ”/”是取商是取商 “%”是取余是取余 否則否則”/”為除為除 法運(yùn)算。法運(yùn)算。 36 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家37 例:算術(shù)運(yùn)算符應(yīng)用例:算術(shù)運(yùn)算符應(yīng)用 #include int main(void) int a = 5, b = 3, c = 25, d = 12; float qu; int re,in,de; /* 使用算術(shù)運(yùn)算符使用算術(shù)運(yùn)算符 */ qu = a / b; / 除法除法 re = a % b; /

29、 求模求模 in = +c; de = -d; printf (商為商為 %fn,qu); printf (余數(shù)為余數(shù)為 %dn,re); printf (“加加 1 1 后為后為 %dn,in); printf (減減 1 1 后為后為 %dn,de); return 0; 輸出: 商為 1.000000 余數(shù)為 2 加 1 后為 26 減 1 后為 11 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家38 賦值運(yùn)算符賦值運(yùn)算符 變量變量 表達(dá)式表達(dá)式; ; height = 177.5; weight = 78; gender = m; x = a+b; w = sin(a)

30、+sin(b); y = i+; 作用是將一個(gè)數(shù)據(jù)(或表達(dá)式的值)賦給一個(gè)變作用是將一個(gè)數(shù)據(jù)(或表達(dá)式的值)賦給一個(gè)變 量。注意:賦值符號(hào)左邊只能是變量,不能是表達(dá)量。注意:賦值符號(hào)左邊只能是變量,不能是表達(dá) 式,也不允許是常量。式,也不允許是常量。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家 注意注意 在一個(gè)表達(dá)式中可以連續(xù)使用多個(gè)賦值運(yùn)算符。運(yùn)算時(shí)按在一個(gè)表達(dá)式中可以連續(xù)使用多個(gè)賦值運(yùn)算符。運(yùn)算時(shí)按 自右向左的順序進(jìn)行。例如:自右向左的順序進(jìn)行。例如:a=b=c=0 賦值運(yùn)算符的優(yōu)先級(jí)較低(僅高于逗號(hào)運(yùn)算符)賦值運(yùn)算符的優(yōu)先級(jí)較低(僅高于逗號(hào)運(yùn)算符) 當(dāng)賦值運(yùn)算符兩邊的數(shù)

31、據(jù)類型不一致時(shí),系統(tǒng)將結(jié)果轉(zhuǎn)換當(dāng)賦值運(yùn)算符兩邊的數(shù)據(jù)類型不一致時(shí),系統(tǒng)將結(jié)果轉(zhuǎn)換 成賦值運(yùn)算符左邊變量的類型后再賦值。成賦值運(yùn)算符左邊變量的類型后再賦值。 例如:例如:f為單精度實(shí)型變量,為單精度實(shí)型變量,f=123變?yōu)樽優(yōu)閒=123.000000 實(shí)數(shù)給整數(shù)賦值時(shí)自動(dòng)舍棄后面的小數(shù)部分實(shí)數(shù)給整數(shù)賦值時(shí)自動(dòng)舍棄后面的小數(shù)部分 例如:例如:i=234.856 i=234 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家 注意注意 將較短的整數(shù)賦給較長(zhǎng)的整型變量時(shí),保持?jǐn)?shù)值大小不變將較短的整數(shù)賦給較長(zhǎng)的整型變量時(shí),保持?jǐn)?shù)值大小不變 直接賦值。直接賦值。 例如:短整型例如:短整型s=12

32、3,長(zhǎng)整型,長(zhǎng)整型l=s=123 長(zhǎng)整型賦給短整型時(shí),會(huì)長(zhǎng)整型賦給短整型時(shí),會(huì)“截?cái)嘟財(cái)唷边@些較長(zhǎng)的整型數(shù),只這些較長(zhǎng)的整型數(shù),只 保留低位的數(shù)字。保留低位的數(shù)字。 例如:字符型例如:字符型c,c=300的結(jié)果的結(jié)果=44. 將有符號(hào)整型數(shù)賦值給無(wú)符號(hào)整型或者將無(wú)符號(hào)整型賦值將有符號(hào)整型數(shù)賦值給無(wú)符號(hào)整型或者將無(wú)符號(hào)整型賦值 給有符號(hào)整型數(shù)時(shí),要考慮符號(hào)的變化。給有符號(hào)整型數(shù)時(shí),要考慮符號(hào)的變化。 例如例如i=-1,無(wú)符號(hào)時(shí),無(wú)符號(hào)時(shí)=4294967295 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家41 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 運(yùn)算符運(yùn)算符表達(dá)式表達(dá)式計(jì)算計(jì)算結(jié)果(假設(shè)

33、結(jié)果(假設(shè) x=10x=10) +=x += 5x = x + 515 -=x -= 5x = x - 55 *=x *= 5x = x * 550 /=x /= 5x = x / 52 %=x %= 5x = x % 50 intint x=7; x=7; 計(jì)算計(jì)算 x+=x-=x+=x-=x+xx+x x+xx+x=14=14 x=x-14=-7x=x-14=-7 x=x-7x=x-7 x=-14x=-14 不推薦! 在賦值運(yùn)算符在賦值運(yùn)算符“=”=”之前加上之前加上= =、- -等雙目運(yùn)算符,其優(yōu)先級(jí)等雙目運(yùn)算符,其優(yōu)先級(jí) 與結(jié)合性都與賦值運(yùn)算符與結(jié)合性都與賦值運(yùn)算符“=”=”一樣一樣

34、要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家42 賦值運(yùn)算符使用賦值運(yùn)算符使用 #include int main (void) float book_price = 60.75; /存放書的價(jià)格 printf(n 書的價(jià)格 = %f,book_price); book_price += 12.50; printf(n 書的新價(jià)格 =%fn,book_price); return 0; book_price=book_price+12.50; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家43 sizeof運(yùn)算符運(yùn)算符 sizeof(int); float num

35、; sizeof(num); 4 4 char1 int4 short int2 long4 float4 double8 sizeof 運(yùn)算符 返回的大小 使用使用 sizeof 運(yùn)算符可以獲得數(shù)據(jù)類型或變量占用內(nèi)存空運(yùn)算符可以獲得數(shù)據(jù)類型或變量占用內(nèi)存空 間的大小。其間的大小。其一般形式為:一般形式為: sizeof(type_name)或或sizeof(variable_name) sizeof 運(yùn)算符的結(jié)果以字節(jié)為單位顯示運(yùn)算符的結(jié)果以字節(jié)為單位顯示 注意:在注意:在3232位計(jì)算機(jī)中,位計(jì)算機(jī)中,intint類型的變量占類型的變量占4 4字節(jié)的內(nèi)存大字節(jié)的內(nèi)存大 小,和小,和long

36、long類型的大小一樣,所以現(xiàn)在基本上可以直接使類型的大小一樣,所以現(xiàn)在基本上可以直接使 用用intint類型,而不需要使用類型,而不需要使用longlong類型。類型。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家44 sizeof使用舉例使用舉例 #include int main(void) printf(data type number of bytesn); printf(- -n); printf(signed) chart%dn, sizeof(char); printf(signed) intt%dn, sizeof(int); printf(short) in

37、tt%dn, sizeof(short); printf(long) intt%dn, sizeof(long); printf(floatt%dn, sizeof(float); printf(doublet%dn, sizeof(double); return 0; 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家45 為什么要用為什么要用sizeof獲得字長(zhǎng)獲得字長(zhǎng) 因?yàn)橐驗(yàn)?同種類型在不同的平臺(tái)其占字節(jié)數(shù)不盡相同。比如同種類型在不同的平臺(tái)其占字節(jié)數(shù)不盡相同。比如int在在16位、位、32 位和位和64位系統(tǒng)分別占位系統(tǒng)分別占2、4和和8個(gè)字節(jié)。個(gè)字節(jié)。 現(xiàn)象與危害:現(xiàn)象與危

38、害: 在平臺(tái)間移植時(shí)會(huì)出現(xiàn)問(wèn)題,導(dǎo)致數(shù)據(jù)丟失或者溢出。在平臺(tái)間移植時(shí)會(huì)出現(xiàn)問(wèn)題,導(dǎo)致數(shù)據(jù)丟失或者溢出。 解決方案:解決方案: 充分利用充分利用sizeof獲得字長(zhǎng),提前制定解決方案。獲得字長(zhǎng),提前制定解決方案。 要學(xué)蜜蜂采百花,問(wèn)遍百家成行家要學(xué)蜜蜂采百花,問(wèn)遍百家成行家 邏輯運(yùn)算符邏輯運(yùn)算符 #include int main(void) int x,y; printf(please input a number:n); scanf(%d, y=(x1) printf(x=%d,y=%dn,x,y); if(x1n); else if(x1) printf(x1)n); else printf(who know this number

溫馨提示

  • 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)論