《c語言程序設(shè)計(jì)》第2章.ppt
《《c語言程序設(shè)計(jì)》第2章.ppt》由會員分享,可在線閱讀,更多相關(guān)《《c語言程序設(shè)計(jì)》第2章.ppt(61頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第二章基本數(shù)據(jù)類型 運(yùn)算符和表達(dá)式 C語言程序設(shè)計(jì) 2 本章主要內(nèi)容 本章介紹C語言的基礎(chǔ) 包括 數(shù)據(jù)類型運(yùn)算符和表達(dá)式均是程序設(shè)計(jì)的基本知識為什么討論這些知識 通常程序要對數(shù)據(jù)進(jìn)行操作處理 處理的對象是數(shù)據(jù)通過運(yùn)算符和表達(dá)式進(jìn)行操作 3 例如 例2 1 計(jì)算圓的面積 半徑為5cm 程序如下 main floatr area r 5 area 3 14 r r printf f n area 運(yùn)算結(jié)果是輸出圓的面積 78 500000 程序中用到的數(shù)據(jù) r area 5 3 14對數(shù)據(jù)進(jìn)行的運(yùn)算 例jc2 1 4 分析 計(jì)算機(jī)操作處理時(shí) 要完成以下工作 在內(nèi)存中給半徑r和運(yùn)算結(jié)果area開辟存儲空間 存放它們的值 應(yīng)該留多大的地方來存放它們的值 數(shù)據(jù)5和3 14與r area不同 它們是在編寫程序時(shí)就給出確定的值 在運(yùn)算過程中不會改變 這樣的數(shù)計(jì)算機(jī)怎么處理 對整數(shù)5和小數(shù)3 14 計(jì)算機(jī)存放時(shí)是否有區(qū)別 涉及數(shù)據(jù)類型的基本知識 5 C語言的數(shù)據(jù)類型 C數(shù)據(jù)類型 本章討論基本類型數(shù)據(jù) 6 2 1 1整型數(shù)據(jù) 1 整型數(shù)據(jù)的類型基本整型數(shù)據(jù)int 分配2Byte短整型數(shù)據(jù)shortint 分配2Byte長整型數(shù)據(jù)longint 分配4Byte整型數(shù)據(jù)均以二進(jìn)制補(bǔ)碼形式存儲 問題 為什么要采用補(bǔ)碼 如何表示 7 計(jì)算機(jī)中正 負(fù)數(shù)的表示 例如 109 1101101 2要區(qū)別 109和 109方法是 將符號也數(shù)碼化即 正的符號 用0表示負(fù)的符號 用1表示 計(jì)算機(jī)中的數(shù)表示方法是 符號位 二進(jìn)制數(shù)值 以8bit為例 109 1101101 01101101 109 1101101 11101101 8 問題 計(jì)算機(jī)計(jì)算復(fù)雜化 例如計(jì)算 19 22 10010011 00010110 解決的方法是 使用反碼或補(bǔ)碼的表示方法 按前述表示的編碼稱為原碼 即能將減法一律轉(zhuǎn)換為加法 需要判斷符號是否相同 如果相同 結(jié)果符號不變 并進(jìn)行絕對值相加如果不同 結(jié)果取絕對值大的數(shù)的符號 并進(jìn)行絕對值相減 9 原碼 反碼和補(bǔ)碼 正數(shù) 原碼 反碼 補(bǔ)碼相同符號位為0 數(shù)值為對應(yīng)的二進(jìn)制數(shù) 109 01101101 原 01101101 反 01101101 補(bǔ)負(fù)數(shù) 原碼符號位為1 數(shù)值為絕對值的二進(jìn)制數(shù) 109 11101101 原反碼符號位為1 數(shù)值為絕對值的二進(jìn)制數(shù)各位變反 109 10010010 反補(bǔ)碼符號位為1 數(shù)值為絕對值的二進(jìn)制數(shù)各位變反加1 109 10010011 補(bǔ) 10 2 有符號和無符號整型數(shù)據(jù) 有符號的整型數(shù)據(jù)signedint無符號的整型數(shù)據(jù)unsignedint區(qū)別是將最高位看作符號位還是數(shù)據(jù)位 例如 1111111110101000作為有符號數(shù)使用時(shí) 最高為符號位為負(fù)數(shù) 值是 88 再求一次補(bǔ) 作為無符號數(shù)使用時(shí) 最高為數(shù)據(jù)位為無符號的數(shù) 值是 65448 11 例如 main unsignedintm m 65448 printf nm d n m printf m u n m 例jc2 a 輸出結(jié)果 m 88m 65448 按有符號數(shù)輸出 按無符號數(shù)輸出 12 整型數(shù)據(jù)的類型及規(guī)定 方括號表示可選項(xiàng)int分配2Byte long分配4Byte 13 2 1 2實(shí)型數(shù)據(jù) 1 實(shí)型數(shù)據(jù)的類型單精度實(shí)型數(shù)據(jù)float 分配4Byte雙精度實(shí)型數(shù)據(jù)double 分配8Byte2 實(shí)型數(shù)據(jù)的存儲 單精度實(shí)型 指數(shù)部分 小數(shù)部分 小數(shù)的符號位 指數(shù)的符號位 14 實(shí)型數(shù)據(jù)的類型及規(guī)定 C標(biāo)準(zhǔn)并未具體規(guī)定各種實(shí)型數(shù)據(jù)所占字節(jié)數(shù) 也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù) 一般而言 小數(shù)部分位數(shù)多 數(shù)據(jù)表示的有效數(shù)字多 精度就高 而指數(shù)部分位數(shù)多 則表示的數(shù)據(jù)范圍更大 有效數(shù)字的意義 例jC2 a 15 2 1 3字符型數(shù)據(jù) 字符型數(shù)據(jù)char 分配1Byte字符型數(shù)據(jù)是指字母 數(shù)字 各種符號等用ASCII值表示的字符例如 a 是一個(gè)char類型數(shù)據(jù) 稱作字符常量 存儲 01100001 2 1 4空類型 空類型void通常與指針或函數(shù)結(jié)合使用 16 2 2常量 變量與標(biāo)準(zhǔn)函數(shù) 主要內(nèi)容 常量變量標(biāo)準(zhǔn)庫函數(shù) 17 2 2 1常量 在運(yùn)行程序的過程中值保持不變的量1 整型常量十進(jìn)制 0 9八進(jìn)制 0 7 以0開頭十六進(jìn)制 0 9 A F a f 以0 x或0X開頭 例如 100 80 12301002401000730 x380 x100X100XFF0 x0a 18 1 整型常量 整型常量的類型 根據(jù)值大小默認(rèn)類型 整型常量后面加l或L 則認(rèn)為是longint型例如 123L 0L 432l 0 x100l 注意 十六進(jìn)制常量中可以使用大寫字母A F 也可以使用小寫字母a f 八進(jìn)制常量中不能出現(xiàn)數(shù)字8或9例如 018 0921非法 19 2 實(shí)型常量 十進(jìn)制形式1 01 12 0 12 00 0指數(shù)形式1e31 8e 3 123E 6 1E 3 指數(shù)只能是整數(shù) 而尾數(shù)則可以是整數(shù)也可以是小數(shù) 無論指數(shù)或尾數(shù)均不能省略例如 1e E 5 E 3非法實(shí)型常量的類型 默認(rèn)為double型 后面加F 或f 則強(qiáng)調(diào)表示該數(shù)是float類型例如 3 5f 1e2F 20 3 字符型常量 可視字符常量單引號括起來的單個(gè)可視字符例如 a A 3 等轉(zhuǎn)義字符常量單引號括起來的 與可視字符組合 例如 21 4 字符串常量 用雙引號括起的一個(gè)字符序列例如 ABC 123 a n t nGoodmorning 字符串常量的長度 所包含的字符個(gè)數(shù)字符串常量的存儲方式 所占存儲單元數(shù) 串長度 1例如 字符串結(jié)束標(biāo)記 22 5 符號常量 以標(biāo)識符來代表的常量事先編譯預(yù)處理命令define定義編譯時(shí)先由系統(tǒng)替換為它所代表的常量 再進(jìn)行編譯例如 defineLEN2 5main floata b a 2 3 14 LEN b 3 14 LEN LEN printf a f b f n a b 編譯前系統(tǒng)進(jìn)行替換 23 5 符號常量 main floata b a 2 3 14 2 5 b 3 14 2 5 2 5 printf a f b f n a b define是編譯預(yù)處理命令 必須以 開頭編譯預(yù)處理命令在第7章討論 替換為 24 2 2 2變量 1 變量的有關(guān)概念在程序運(yùn)行過程中 其值改變的數(shù)據(jù) 稱為變量 變量用標(biāo)識符表示 稱為變量名 變量必須 先定義后使用 系統(tǒng)為變量分配存儲單元 存儲變量的值 編寫程序時(shí)通過變量名來存 取變量值 例如 有變量a它的值是510 25 2 變量定義 變量定義的一般格式 數(shù)據(jù)類型說明符變量列表 例如 inti j longk m floatx y charch1 ch2 必須使用合法的標(biāo)識符作變量名不能使用關(guān)鍵字為變量命名 26 3 變量的初始化 允許在說明變量的時(shí)候?qū)ψ兞抠x初值 例如 inta 5 b 10 2 doublex 23 568 y charch1 a ch2 66 ch3 142 表示定義變量并對變量存儲單元賦值 錯誤的初始化 inta 3 b b 5 floatm n 23 16 27 2 2 3標(biāo)準(zhǔn)庫函數(shù) 由C編譯系統(tǒng)定義的一種函數(shù) 存放在系統(tǒng)函數(shù)庫中 用戶可以根據(jù)需要隨時(shí)調(diào)用常用函數(shù)如 printf scanf fabs sqrt sin 常用數(shù)學(xué)函數(shù)參見教材P30表2 5 函數(shù)調(diào)用形式 函數(shù)名 參數(shù)表 例如 putchar a sqrt x 例jc2 3 28 2 3運(yùn)算符和表達(dá)式 主要內(nèi)容 算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式位運(yùn)算符和位運(yùn)算表達(dá)式條件運(yùn)算符和條件表達(dá)式逗號運(yùn)算符和逗號表達(dá)式其他運(yùn)算符及其運(yùn)算 29 運(yùn)算符的有關(guān)概念 作用 對運(yùn)算對象完成規(guī)定的操作運(yùn)算類型 按運(yùn)算對象分 單目 雙目 三目按功能分 算術(shù) 賦值 關(guān)系 邏輯條件 逗號 位 其他 30 運(yùn)算符的優(yōu)先級和結(jié)合性 優(yōu)先級指各種運(yùn)算符號的運(yùn)算優(yōu)先順序例如 算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算算術(shù)運(yùn)算中先 后 結(jié)合性指運(yùn)算符號和運(yùn)算對象的結(jié)合方向分為 從左向右 左結(jié)合 和從右向左 右結(jié)合 例如 算術(shù)運(yùn)算符為左結(jié)合a b 4賦值運(yùn)算符為右結(jié)合a b 5 C語言規(guī)定見教材P297附錄B 31 本章涉及的運(yùn)算符 sizeof 數(shù)據(jù)類型標(biāo)識符 32 表達(dá)式的有關(guān)概念 什么是表達(dá)式由運(yùn)算符將運(yùn)算對象連接成的式子 它描述了一個(gè)具體的求值運(yùn)算過程 計(jì)算表達(dá)式的值按照運(yùn)算符的運(yùn)算規(guī)則求值求值時(shí)注意運(yùn)算符的優(yōu)先級和結(jié)合性表達(dá)式值的類型自動轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換 33 例如 表達(dá)式 150 b 2 12 456b a 2a a a 2 f a b c a b c max a b a ba 3 a 3 a a1 float a 6 34 算術(shù)運(yùn)算 算術(shù)運(yùn)算符的優(yōu)先級 沒有乘方運(yùn)算符 要計(jì)算a3要寫作a a a的連乘 或用標(biāo)準(zhǔn)庫函數(shù)pow a 3 的運(yùn)算對象可為各種類型數(shù)據(jù) 但是當(dāng)進(jìn)行兩個(gè)整型數(shù)據(jù)相除時(shí) 運(yùn)算結(jié)果也是整型數(shù)據(jù) 要求運(yùn)算對象必須是整型數(shù)據(jù) 功能是求兩數(shù)相除的余數(shù) 余數(shù)的符號與被除數(shù)的符號相同 35 自增自減運(yùn)算 是單目運(yùn)算符有前綴和后綴兩種形式前綴形式 先自增 自減 再引用 后綴形式 先引用再自增 自減 功能 前綴形式 a等價(jià)于a a 1 a等價(jià)于a a 1后綴形式a 等價(jià)于a a 1a 等價(jià)于a a 1 表達(dá)式的值會不同 36 例如 當(dāng)a 5時(shí) a表達(dá)式的值為6 且a 6 a 表達(dá)式的值為5 且a 6 b a等價(jià)于a a 1 b a表達(dá)式的值為6 且a 6 b 6 b a 等價(jià)于b a a a 1表達(dá)式的值為5 且a 6 b 5 37 說明 和 的運(yùn)算對象只能是變量 或運(yùn)算結(jié)果是變量的表達(dá)式 不能是常量 或運(yùn)算結(jié)果是數(shù)值的表達(dá)式 例如 5 a 2 不合法 具有右結(jié)合性 結(jié)合方向?yàn)閺挠业阶?例如 a 等價(jià)于 a 如果有多個(gè)運(yùn)算符連續(xù)出現(xiàn)時(shí) C系統(tǒng)盡可能多的從左到右將字符組合成一個(gè)運(yùn)算符例如 i j等價(jià)于 i j i j等價(jià)于 i j 38 main inta 5 printf d d n a a 說明 續(xù) 對函數(shù)參數(shù)的求值順序 TurboC系統(tǒng)先計(jì)算最右邊的參數(shù)值 再依次計(jì)算左面的參數(shù)值 例2 5 有多個(gè)函數(shù)參數(shù)且為同一變量自增的運(yùn)算處理 輸出結(jié)果 65 運(yùn)行例2 5 39 說明 續(xù) 例2 6 有多個(gè)函數(shù)參數(shù)且為同一變量多次自增的運(yùn)算處理 main inta 5 printf d d n a a a 輸出結(jié)果 711 運(yùn)行例2 6 40 賦值運(yùn)算 賦值運(yùn)算符 右結(jié)合 賦值表達(dá)式將表達(dá)式的值存入變量對應(yīng)的內(nèi)存單元中m 12b a 2m 3 n等價(jià)于m m 3 n x x 5 41 說明 賦值號左邊必須是變量 右邊可以是C語言任意合法的表達(dá)式例如 n t 210等價(jià)于 a b b c 10 賦值號與數(shù)學(xué)中的等號含義不同例如 數(shù)學(xué)中a b等價(jià)于b aC語言中a b不等價(jià)于b a 42 關(guān)系運(yùn)算 關(guān)系運(yùn)算符 左結(jié)合 c等價(jià)于a b c 與 a b c不等價(jià)關(guān)系運(yùn)算符優(yōu)先于賦值 低于算術(shù) 43 說明 關(guān)系運(yùn)算的結(jié)果應(yīng)該是邏輯值 C語言用數(shù)值用1表示邏輯真 0表示邏輯假例如 7 5的值是1 5 7的值是0 a b 的值是0 a b 的值是1即關(guān)系表達(dá)式的值 0或1實(shí)型數(shù)可進(jìn)行大于或小于比較 但通常不進(jìn)行 或 的關(guān)系運(yùn)算 44 邏輯運(yùn)算符 邏輯運(yùn)算符 邏輯運(yùn)算符的運(yùn)算規(guī)則 45 邏輯表達(dá)式 邏輯表達(dá)式用邏輯運(yùn)算符將運(yùn)算對象連接成的式子例如 0 b a b c da b 5 c 4 x y z邏輯運(yùn)算符的優(yōu)先級和結(jié)合性 是單目運(yùn)算符 右結(jié)合 高于算術(shù) 和 是雙目運(yùn)算符 左結(jié)合 高于賦值運(yùn)算符 低于關(guān)系運(yùn)算符 46 邏輯運(yùn)算規(guī)則 從左到右依次進(jìn)行邏輯計(jì)算運(yùn)算對象為非0表示邏輯真運(yùn)算對象為0表示邏輯假邏輯運(yùn)算的結(jié)果為0或1例如設(shè) a 15 b 0 c 2a b c結(jié)果為0a b c結(jié)果為1 a c b c結(jié)果為1 47 邏輯運(yùn)算規(guī)則 續(xù) 運(yùn)算按照從左至右的順序進(jìn)行 一旦能夠確定邏輯表達(dá)式的值 就立即結(jié)束運(yùn)算 邏輯運(yùn)算的短路性質(zhì)例如設(shè) a 1 b 0 c 2a b c a b c 為0 運(yùn)算終止 表達(dá)式值為0 為非0 運(yùn)算終止 表達(dá)式值為1且a為2 b為0 c為 2 b c保持原值 48 關(guān)系與邏輯運(yùn)算符的應(yīng)用 表示數(shù)學(xué)公式a b c判斷a b c三條線段能否組成一個(gè)三角形a b不同時(shí)為負(fù) a b c a c b b c a a 0 b 0 a 0 a 0 b 0 b 0 a b b c 49 位運(yùn)算符 位運(yùn)算符的運(yùn)算對象只能是整型數(shù)據(jù)或字符型數(shù)據(jù) 不能是實(shí)型數(shù)據(jù)運(yùn)算對象一律按二進(jìn)制補(bǔ)碼參加運(yùn)算 并按位進(jìn)行運(yùn)算位運(yùn)算的結(jié)果是一個(gè)整型數(shù)據(jù) 低于單目 算術(shù)運(yùn)算符 高于其他運(yùn)算符 低于單目 算術(shù)和關(guān)系運(yùn)算符 高于其他運(yùn)算符 50 位邏輯運(yùn)算符的運(yùn)算規(guī)則 假設(shè)ai和bi均是一個(gè)二進(jìn)制位 bit 例如 假設(shè)a 10 b 010求a b a b a b a 51 程序如下 main inta 10 b 010 printf d d n a 輸出結(jié)果 8102 11 0000000000001010 00000000000010000000000000001000即 a b的值是8 運(yùn)行jc2 b 52 移位運(yùn)算 例如 a b 1等價(jià)于 a 8 b 1 例如 假設(shè)a 10 b 2 求a b 1 main inta 10 b 2 printf d d n a b 1 輸出結(jié)果 409 運(yùn)行jc2 c 請自行分析運(yùn)行結(jié)果 53 條件表達(dá)式運(yùn)算 條件運(yùn)算符 條件表達(dá)式的一般形式表達(dá)式1 表達(dá)式2 表達(dá)式3例如 m 10 b 20 a bx 3 a 5 100 200 C語言中唯一的三目運(yùn)算符 要正確區(qū)分用 和 分隔的表達(dá)式涉及條件運(yùn)算符的優(yōu)先級與結(jié)合性 54 條件運(yùn)算符優(yōu)先級 條件運(yùn)算符優(yōu)先級高于賦值 逗號運(yùn)算符 低于其他運(yùn)算符例如 m 10 b 20 a b x 3 a 5 100 200 等價(jià)于 m n x a 3 等價(jià)于 a 10 b 20 a b 等價(jià)于 x 3 a 5 100 200 55 條件運(yùn)算符的結(jié)合性 條件運(yùn)算符具有右結(jié)合性當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)條件運(yùn)算符時(shí) 應(yīng)該將位于最右邊的問號與離它最近的冒號配對 并按這一原則正確區(qū)分各條件運(yùn)算符的運(yùn)算對象 例如 w x x w x y x y與w x x w x y x y 等價(jià)與 w x x w x y x y不等價(jià) 56 逗號表達(dá)式運(yùn)算 逗號表達(dá)式的一般形式表達(dá)式1 表達(dá)式2 表達(dá)式n逗號表達(dá)式的值從左向右 依次對表達(dá)式求值 最后得到表達(dá)式n的值就是逗號表達(dá)式的值 例如 a 5 a a 3表達(dá)式值為18 且a 6 t 1 t 5 t 表達(dá)式值為1 且t 2 x a 3 5 a 4 賦值表達(dá)式的值為60 且x 60 a 15 57 取地址運(yùn)算符 為單目運(yùn)算符運(yùn)算對象只能是變量運(yùn)算結(jié)果是變量的存儲地址例如有定義 inta student charch 可以對變量a ch student進(jìn)行 運(yùn)算 a ch student 58 長度運(yùn)算符sizeof 為單目運(yùn)算符運(yùn)算對象只能是變量名或數(shù)據(jù)類型標(biāo)識符運(yùn)算結(jié)果為該變量或該數(shù)據(jù)類型的長度 main inta 5 doublex printf d d sizeof int sizeof a printf d d sizeof double sizeof x printf d d n sizeof float sizeof char 輸出結(jié)果 228841 運(yùn)行jc2 d 59 2 4運(yùn)算中數(shù)據(jù)類型的轉(zhuǎn)換 2 4 1數(shù)據(jù)類型的自動轉(zhuǎn)換轉(zhuǎn)換原則 自動將精度低 表示范圍小的運(yùn)算對象類型向精度高 表示范圍大的運(yùn)算對象類型轉(zhuǎn)換 例如有定義 inta charch 表達(dá)式 a ch 2 35La ch 2 35 60 2 賦值運(yùn)算中的類型轉(zhuǎn)換 小數(shù)部分自動補(bǔ)0 自動舍去實(shí)型表達(dá)式的小數(shù)部分 注意不進(jìn)行四舍五入 自動截取表達(dá)式值的低字節(jié)賦值 舍去高字節(jié) 自動給高字節(jié)補(bǔ)0或補(bǔ)1 61 2 4 2數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換的一般形式 類型名 表達(dá)式例如 int b 3 x 31 float a 6 注意 float 22 5與 float 22 5 不同錯誤的類型轉(zhuǎn)換 int b a 5b int 3 a- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- c語言程序設(shè)計(jì) 語言程序設(shè)計(jì)
鏈接地址:http://m.kudomayuko.com/p-6598988.html