C語(yǔ)言程序設(shè)計(jì)教程第2章北京郵電大學(xué)出版社.ppt
《C語(yǔ)言程序設(shè)計(jì)教程第2章北京郵電大學(xué)出版社.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言程序設(shè)計(jì)教程第2章北京郵電大學(xué)出版社.ppt(47頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式2 1常量和變量2 2C語(yǔ)言的基本數(shù)據(jù)類(lèi)型2 3數(shù)據(jù)類(lèi)型轉(zhuǎn)換2 4運(yùn)算符與表達(dá)式 C語(yǔ)言程序設(shè)計(jì)教程 2 C語(yǔ)言的數(shù)據(jù)類(lèi)型 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu) 是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的 具體分類(lèi)如下 1 基本類(lèi)型分為整型 實(shí)型 又稱浮點(diǎn)型 字符型和枚舉型四種 2 構(gòu)造類(lèi)型分為數(shù)組類(lèi)型 結(jié)構(gòu)類(lèi)型和共用類(lèi)型三種 3 指針類(lèi)型 在第9章中介紹 4 空類(lèi)型C語(yǔ)言中的數(shù)據(jù) 有常量和變量之分 它們分別屬于上述這些類(lèi)型 3 本章將介紹基本類(lèi)型中的整型 實(shí)型和字符型三種數(shù)據(jù) 4 一 常量與符號(hào)常量 常量是指在程序運(yùn)行中 其數(shù)值不能被改變的量 常量又可分為直接常量和符號(hào)常量 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 2 1常量與變量 常量的類(lèi)型 可通過(guò)書(shū)寫(xiě)形式來(lái)判別 5 120 100 0 0120 072 0 xFFFF 0 x1e 0X28AF 0XED4 120L 200L 長(zhǎng)整型常量3 14 3 1 5 12E 6 099 12f 0 xg 48EA 019 5 1e 08 實(shí)型常量只能用十進(jìn)制形式表示2 1E10 2 E 6 6 4E 4 8 E9 changsha ab 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 1 直接常量 是在程序中直接引用的數(shù)據(jù) 請(qǐng)判斷這些常量正確與否 6 2 符號(hào)常量是用標(biāo)識(shí)符來(lái)表示一個(gè)數(shù)據(jù) 在程序不能給它賦值 定義形式 define標(biāo)識(shí)符常量數(shù)據(jù)例如 definePI3 14159在程序預(yù)處理時(shí) 凡是出現(xiàn)標(biāo)識(shí)符PI的地方都將用數(shù)據(jù)3 14159來(lái)替換 如 2 2 3 PI就等價(jià)于2 2 3 3 14159 二 變量1 變量的概念在程序運(yùn)行過(guò)程中 其值可以被改變的量稱為變量 2 變量的兩個(gè)要素 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 7 1 變量名 每個(gè)變量都必須有一個(gè)名字 變量名 變量命名遵循標(biāo)識(shí)符命名規(guī)則 2 變量值 在程序運(yùn)行過(guò)程中 變量值存儲(chǔ)在內(nèi)存中 在程序中 通過(guò)變量名來(lái)引用變量的值 3 標(biāo)識(shí)符命名規(guī)則 1 有效字符 只能由字母 數(shù)字和下劃線組成 且以字母或下劃線開(kāi)頭 2 有效長(zhǎng)度 隨系統(tǒng)而異 但至少前8個(gè)字符有效 如果超長(zhǎng) 則超長(zhǎng)部分被舍棄 例如 由于student name和student number的前8個(gè)字符相同 有的系統(tǒng)認(rèn)為這兩個(gè)變量 是一回事而不加區(qū)別 在TCV2 0中 變量名 標(biāo)識(shí)符 的有效長(zhǎng)度為1 32個(gè)字符 缺省值為32 8 3 C語(yǔ)言的關(guān)鍵字不能用作變量名 注意 C語(yǔ)言對(duì)英文字母的大小敏感 即同一字母的大小寫(xiě) 被認(rèn)為是兩個(gè)不同的字符 習(xí)慣上 變量名和函數(shù)名中的英文字母用小寫(xiě) 以增加可讀性 思考題 在C語(yǔ)言中 變量名total與變量名TOTAL ToTaL tOtAl等是同一個(gè)變量嗎 標(biāo)識(shí)符命名的良好習(xí)慣 見(jiàn)名知意 所謂 見(jiàn)名知意 是指 通過(guò)變量名就知道變量值的含義 通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞 或縮寫(xiě) 作變量名 或漢語(yǔ)拼音字頭作變量名 例如 name xm 姓名 sex xb 性別 age nl 年齡 salary gz 工資 9 4 變量的定義與初始化在 語(yǔ)言中要求對(duì)所有用到的變量 必須先定義 后使用 且稱在定義變量的同時(shí)進(jìn)行賦初值的操作為變量初始化 2 變量初始化在說(shuō)明變量的同時(shí)給變量一個(gè)初始值 inta 5 b 3 inta b c 3 inta b c a b c 3 例如 10 main intx y z w 定義x y z w為整型變量 unsignedintk 定義k為無(wú)符號(hào)整型變量 x 10 y 20 k 30 z x k w y k printf x k d y k d n z w 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 例2 1 程序運(yùn)行結(jié)果為 x k 40 y k 10 11 5 變量的作用域 C語(yǔ)言程序是由函數(shù)組成的 且有且只能有一個(gè)main函數(shù) 變量定義可以出現(xiàn)在函數(shù)內(nèi) 亦可出現(xiàn)在函數(shù)外或者是函數(shù)的參數(shù)中 按照變量定義語(yǔ)句出現(xiàn)的位置 可以分為 局部變量 在函數(shù)內(nèi)定義 只在該函數(shù)中才能使用 全局變量 在函數(shù)外定義 從它被定義的位置起 在之后的所有函數(shù)中有效 形式參數(shù) 定義為函數(shù)的參數(shù) 只在該函數(shù)中才能使用 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 12 變量的特點(diǎn) 變量是指以標(biāo)識(shí)符為名字 其值可以改變的量 變量代表計(jì)算機(jī)內(nèi)存中的某一存儲(chǔ)空間 該存儲(chǔ)空間中存放的數(shù)據(jù)就是變量的值 在同一程序塊中 變量不能被重復(fù)定義 使用變量時(shí)必須 先定義 后使用 13 1 整型常量表示方法 1 十進(jìn)制形式 與數(shù)學(xué)上的整數(shù)表示相同 例如 12 100 0 2 八進(jìn)制形式 在數(shù)碼前加數(shù)字0 例如 012 1 81 2 80 10 十進(jìn)制 3 十六進(jìn)制形式 在數(shù)碼前加0X 數(shù)字0和字母X 例如 0 x12 1 161 2 160 18 十進(jìn)制 八進(jìn)制的數(shù)碼范圍為0 7 018 十六進(jìn)制的數(shù)碼除了數(shù)字0 9外 還使用英文字母a f 或A F 表示10 15 如 0 x1e 注意 2 2C語(yǔ)言的基本數(shù)據(jù)類(lèi)型一 整型數(shù)據(jù) 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 14 2 整型變量分類(lèi) 根據(jù)數(shù)據(jù)所占的二進(jìn)制位數(shù)分為 int short long 同樣存儲(chǔ)長(zhǎng)度的數(shù)據(jù)又分unsigned signed 故可組合出六種類(lèi)型 3 整型變量值域 由機(jī)器中數(shù)據(jù)的存儲(chǔ)長(zhǎng)度決定 如TurboC中 有short 2字節(jié) int 2字節(jié) long 4字節(jié) 關(guān)鍵字所占位數(shù)取值范圍short16 32768 32767unsignedshort160 65535int16 32768 32767unsigned160 65535long32 2147483648 2147483647unsignedlong320 4294967295 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 15 4 數(shù)據(jù)在內(nèi)存中的形式 以二進(jìn)制的形式存放 以補(bǔ)碼表示 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制的形式存放的 如定義inti 12 根據(jù)在C編譯系統(tǒng)一個(gè)整型變量所占的字節(jié)數(shù)為2 變量i在內(nèi)存中的實(shí)際存放情況如圖2 1所示 圖2 1整型變量i在內(nèi)存中的存放示意圖實(shí)際上 數(shù)值是以補(bǔ)碼表示的 正數(shù)的補(bǔ)碼 與原碼相同負(fù)數(shù)的補(bǔ)碼 負(fù)數(shù) 取絕對(duì)值 二進(jìn)制 按位取反 再加1 補(bǔ)碼 16 3的原碼按位取反加1得 3的補(bǔ)碼由此可知 在整數(shù)的16位中 最左邊的一位為符號(hào)位 為0 表示數(shù)值為正 為1 表示數(shù)值為負(fù) 例如 求 3在內(nèi)存中的存放形式 17 5 整型數(shù)據(jù)的溢出 不同的整型數(shù)據(jù)有不同的取值范圍 在程序運(yùn)行過(guò)程中 如果出現(xiàn)數(shù)值超出整型數(shù)據(jù)的允許值范圍 就會(huì)出現(xiàn) 溢出 例如 一個(gè)int型的變量的最大值為 215 1 32767 如果再加1 則產(chǎn)生溢出 其結(jié)果為 215 32768 32767 32768 18 1 實(shí)型常量表示方法 1 十進(jìn)制小數(shù)形式 由數(shù)字和小數(shù)點(diǎn)組成 例如 3 4 4 3 2 指數(shù)形式 十進(jìn)制小數(shù) e 或E 十進(jìn)制數(shù)整數(shù) 例如 12 5e 6表示12 5 10 6 小數(shù)點(diǎn)不能單獨(dú)出現(xiàn) 0 0 e或E的兩邊必須有數(shù) 且其后面必須為整數(shù) 如 6E0 2 e5 2 實(shí)型變量分類(lèi) 關(guān)鍵字字節(jié)數(shù)取值范圍精度 位 float43 4 10 38 3 4 10387double81 7 10 308 1 7 1030815 注意 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 二 實(shí)型數(shù)據(jù) 19 3 實(shí)型數(shù)據(jù)的舍入誤差 voidmain floata 1234567 896 floatb 1234567 848 printf a f nb f n a b voidmain doublea 1234567 896 doubleb 1234567 848 printf a f nb f n a b 結(jié)果 a 1234567 875000b 1234567 875000 結(jié)果 a 1234567 896000b 1234567 848000 20 為什么會(huì)出現(xiàn)這種情況 是由于實(shí)型數(shù)據(jù)是用有限的存儲(chǔ)單元進(jìn)行存儲(chǔ)的 因而能提供的有效數(shù)字有限 在有效數(shù)字以外的數(shù)字將被舍棄 對(duì)于float型變量 只能保證前7位數(shù)字是準(zhǔn)確的 后面的數(shù)字是無(wú)意義的 而采用double型變量后 其精度大幅度提高 能保證前15位有效數(shù)字是準(zhǔn)確的 另外 同樣因?yàn)橛行?shù)字的位數(shù)問(wèn)題 在程序中應(yīng)避免用一個(gè)很大的數(shù)加上或減去一個(gè)很小的數(shù) 否則會(huì)丟失小的數(shù) 21 1 字符常量 1 用單引號(hào)括起來(lái)的一個(gè)字符 如 A 1 等 2 用單引號(hào)括起來(lái)的由反斜杠 引導(dǎo)的轉(zhuǎn)義字符 轉(zhuǎn)義是指在源程序中碰到這種字符組合時(shí) 反斜杠的意義已經(jīng)發(fā)生轉(zhuǎn)變 變成控制代碼和具有某些特殊用途的單個(gè)字符 例如 n 已不再代表英文小寫(xiě)字母n 而轉(zhuǎn)義成了 換行符 字符形式功能 n換行 t橫向跳格 b退格 r回車(chē) 反斜杠字符 單引號(hào)字符 ddd8進(jìn)制數(shù)表示的ASCII碼對(duì)應(yīng)的字符 xhh16進(jìn)制數(shù)表示的ASCII碼對(duì)應(yīng)的字符 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 四 字符類(lèi)型 22 例如 字符A的ASCII碼為 65D 十進(jìn)制 41H 十六進(jìn)制 101Q 八進(jìn)制 字符A可以表示為 A x41 101 2 分類(lèi) char和unsignedchar 3 值域 每個(gè)字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié) 包括ASCII字符表中的所有字符 可顯示字符和非顯示字符 4 變量值的存儲(chǔ)字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式 以二進(jìn)制的ASCII碼形式存儲(chǔ) 字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼 一個(gè)無(wú)符號(hào)整數(shù) 其形式與整數(shù)的存儲(chǔ)形式一樣 所以 語(yǔ)言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 23 1 一個(gè)字符型數(shù)據(jù) 既可以字符形式輸出 也可以整數(shù)形式輸出 案例2 1 字符變量的字符形式輸出和整數(shù)形式輸出 程序功能 用字符形式和整數(shù)形式輸出字符變量 main charch1 ch2 ch1 a ch2 b printf ch1 c ch2 c n ch1 ch2 printf ch1 d ch2 d n ch1 ch2 程序運(yùn)行結(jié)果 ch1 a ch2 bch1 97 ch2 98 24 2 允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算 此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算 案例2 2 字符數(shù)據(jù)的算術(shù)運(yùn)算 程序功能 字符數(shù)據(jù)的算術(shù)運(yùn)算 main charch1 ch2 ch1 a ch2 B 字母的大小寫(xiě)轉(zhuǎn)換 printf ch1 c ch2 c n ch1 32 ch2 32 用字符形式輸出一個(gè)大于256的數(shù)值 printf ch1 200 d n ch1 200 printf ch1 200 c n ch1 200 printf ch1 256 d n ch1 256 printf ch1 256 c n ch1 256 程序運(yùn)行結(jié)果 ch1 A ch2 bch1 200 297ch1 200 ch1 256 353ch1 256 a 25 4 字符串 是用一對(duì)雙引號(hào)括起來(lái)的字符序列 如 SHANGHAI AbcdeFGHijk Howareyou 字符串中字符的個(gè)數(shù)稱為字符串長(zhǎng)度 長(zhǎng)度為0的字符串 即一個(gè)字符都沒(méi)有的字符串 稱為空串 表示為 一對(duì)緊連的雙引號(hào) 例如 Howdoyoudo Goodmorning 等 都是字符串常量 其長(zhǎng)度分別為14和13 空格也是一個(gè)字符 如果反斜杠和雙引號(hào)作為字符串中的有效字符 則必須使用轉(zhuǎn)義字符 例如 1 C msdos v6 22 C msdos v6 22 2 Isay Goodbye Isay Goodbye 注意 a 與 a 的區(qū)別 26 字符串的存儲(chǔ) C語(yǔ)言規(guī)定在存儲(chǔ)字符串常量時(shí) 由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè) 0 作為字符串的結(jié)束標(biāo)志 注意 在源程序中書(shū)寫(xiě)字符串常量時(shí) 不必加結(jié)束字符 0 否則畫(huà)蛇添足 如果有一個(gè)字符串為 CHINA 則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示 所以最后一個(gè)字符 0 是系統(tǒng)自動(dòng)加上的 它占用 字節(jié)而非 字節(jié)內(nèi)存空間 綜上所述 字符常量 A 與字符串常量 A 是兩回事 1 定界符不同 字符常量使用單引號(hào) 而字符串常量使用雙引號(hào) 2 長(zhǎng)度不同 字符常量的長(zhǎng)度固定為1 而字符串常量的長(zhǎng)度 可以是0 也可以是某個(gè)整數(shù) 3 存儲(chǔ)要求不同 字符常量存儲(chǔ)的是字符的ASCII碼值 而字符串常量 除了要存儲(chǔ)有效的字符外 還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志 0 27 C語(yǔ)言允許整型 實(shí)型 字符型數(shù)據(jù)進(jìn)行混合運(yùn)算 有3種轉(zhuǎn)換方式 自動(dòng)轉(zhuǎn)換 賦值轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換 一 類(lèi)型自動(dòng)轉(zhuǎn)換如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類(lèi)型不同 則系統(tǒng)按 先轉(zhuǎn)換 后運(yùn)算 的原則 首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型 然后在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算 轉(zhuǎn)換規(guī)則如圖所示 注意 箭頭方向只表示數(shù)據(jù)類(lèi)型由低向高轉(zhuǎn)換 不要理解為int型先轉(zhuǎn)換成unsigned型 再轉(zhuǎn)換成long型 最后轉(zhuǎn)換成double型 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 2 3數(shù)據(jù)類(lèi)型轉(zhuǎn)換 1 橫向向左的箭頭 表示必須的轉(zhuǎn)換 char和short型必須轉(zhuǎn)換成int型 float型必須轉(zhuǎn)換成double型 2 縱向向上的箭頭 表示不同類(lèi)型的轉(zhuǎn)換方向 28 intx 2 floaty 1 6 charc A 則 c x y c x y65 int 2 int 1 6 double 68 2 double 二 賦值轉(zhuǎn)換 在賦值時(shí)將賦值符右邊值的類(lèi)型轉(zhuǎn)換成與其左邊變量類(lèi)型一致的類(lèi)型 有下列幾種情況 1 實(shí)型整型 字符型 去掉小數(shù)部分 例如 charc 68 5 printf c c 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 29 2 整型 字符型 實(shí)型 補(bǔ)足有效位 3 對(duì)char int short long unsigned型數(shù)據(jù) 賦值符右邊數(shù)據(jù) a位 賦值符左邊的變量 b位 若a b原樣照賦 a b截?cái)喔遖 b位 送低b位 有符號(hào)數(shù)據(jù)有符號(hào)變量 符號(hào)擴(kuò)展 其他情況 高b a位全補(bǔ)0 符號(hào)擴(kuò)展 符號(hào)位為0 剩余的高位補(bǔ)0 符號(hào)位為1 剩余的高位補(bǔ)1 a b floatf 23 23 00000f 7位 doublef A 23 0000000000000f 15位 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 30 三 強(qiáng)制類(lèi)型轉(zhuǎn)換 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為 要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型 被轉(zhuǎn)換的表達(dá)式 當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí) 外面的一對(duì)圓括號(hào)可以缺省 例如 double a 等價(jià)于 double a 將變量a的值轉(zhuǎn)換成double型 int x y 將x y的結(jié)果轉(zhuǎn)換成int型 例如 inta 2 b 5 floatx 4 4 則有 表達(dá)式結(jié)果b a2 float b a2 5 float b a 2 0 int x a x4 4 int x a x 強(qiáng)制轉(zhuǎn)換類(lèi)型得到的是一個(gè)所需類(lèi)型的中間量 原表達(dá)式類(lèi)型并不發(fā)生變化 例如 double a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量 其數(shù)據(jù)類(lèi)型并未轉(zhuǎn)換成double型 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 31 一 C語(yǔ)言的運(yùn)算符簡(jiǎn)介按操作功能運(yùn)算符大致可分為算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 按位運(yùn)算符以及其它運(yùn)算符如賦值運(yùn)算符 條件運(yùn)算符 逗號(hào)運(yùn)算符等 表達(dá)式是由操作數(shù)和運(yùn)算符組成的序列 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 2 4運(yùn)算符與表達(dá)式 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 位運(yùn)算符 賦值運(yùn)算符 條件運(yùn)算符 逗號(hào)運(yùn)算符 指針運(yùn)算符 和 求字節(jié)數(shù)運(yùn)算符sizeof強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符分量運(yùn)算符 下標(biāo)運(yùn)算符 32 1 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)別 它決定了運(yùn)算符的運(yùn)算順序 即優(yōu)先級(jí)高的運(yùn)算符先運(yùn)算 優(yōu)先級(jí)低的運(yùn)算符后運(yùn)算 結(jié)合規(guī)則 規(guī)定了連續(xù)幾個(gè)具有相同優(yōu)先級(jí)運(yùn)算符的運(yùn)算順序 即優(yōu)先級(jí)相同的由結(jié)合規(guī)則來(lái)決定運(yùn)算順序 自左至右的結(jié)合方向 稱為左結(jié)合性 反之 稱為右結(jié)合性 結(jié)合性是 語(yǔ)言的獨(dú)有概念 除單目運(yùn)算符 賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外 其它運(yùn)算符都是左結(jié)合性 2 表達(dá)式求值1 按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行 例如 先乘除后加減 2 如果在一個(gè)運(yùn)算對(duì)象 或稱操作數(shù) 兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同 則按 語(yǔ)言規(guī)定的結(jié)合方向 結(jié)合性 進(jìn)行 33 例如 算術(shù)運(yùn)算符的結(jié)合方向是 自左至右 即 在執(zhí)行 a b c 時(shí) 變量b先與減號(hào)結(jié)合 執(zhí)行 a b 然后再執(zhí)行加c的運(yùn)算 C中所有運(yùn)算符分為15級(jí) 由上至下序號(hào)從1逐次遞增到15 而優(yōu)先級(jí)遞減 列在同一優(yōu)先級(jí)別欄內(nèi)的所有運(yùn)算符具有相同的優(yōu)先級(jí) 其運(yùn)算順序由 結(jié)合規(guī)則 決定 其優(yōu)先級(jí)可方便地記憶為 單目高于雙目 雙目高于三目 三目高于賦值 雙目運(yùn)算中的10個(gè)優(yōu)先級(jí)的先后順序可記憶為 算術(shù)運(yùn)算符高于移位運(yùn)算符 移位運(yùn)算符高于關(guān)系運(yùn)算符 關(guān)系運(yùn)算符高于位邏輯運(yùn)算符 不包括單目位邏輯運(yùn)算符 位邏輯運(yùn)算符高于邏輯運(yùn)算符 如圖3 5所示 34 1級(jí) 算術(shù)運(yùn)算符 2級(jí) 高于 單目運(yùn)算符 1個(gè)優(yōu)先級(jí) 移位運(yùn)算符 1級(jí) 共有10個(gè)優(yōu)先級(jí) 雙目運(yùn)算符關(guān)系運(yùn)算符 2級(jí) 三目運(yùn)算符 1個(gè)優(yōu)先級(jí) 位邏輯運(yùn)算符 3級(jí) 賦值運(yùn)算符 1個(gè)優(yōu)先級(jí) 邏輯運(yùn)算符 2級(jí) 逗號(hào)運(yùn)算符 1個(gè)優(yōu)先級(jí) 圖3 5運(yùn)算符優(yōu)先的簡(jiǎn)潔記憶圖 35 二 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1 五種基本算術(shù)運(yùn)算符 減法 取負(fù) 求余數(shù) 1 關(guān)于除法運(yùn)算 C語(yǔ)言規(guī)定 兩個(gè)整數(shù)相除 其商為整數(shù) 小數(shù)部分被舍棄 例如 5 2 2 但5 0 2 2 5 2 關(guān)于求余數(shù)運(yùn)算 要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù) 否則出錯(cuò) 例如 5 3的值為2 5 3的值為 2 5 3 的值為2 5 3 的值為 2 12 3 3 若a能被b整除 則有 a b 0 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 36 2 表達(dá)式和算術(shù)表達(dá)式 1 表達(dá)式的概念 用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象 常量 變量和函數(shù)等 連接起來(lái)的 符合 語(yǔ)言語(yǔ)法規(guī)則的式子 2 算術(shù)表達(dá)式的概念 表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符 3 優(yōu)先級(jí) 4 結(jié)合性 從左至右 5 表達(dá)式的值 數(shù)值型 int long unsigned double 例如 已知 floata 2 0 intb 6 c 3 求解 a b c 1 5 a fabs 5 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 37 floata 2 0 intb 6 c 3 a b c 1 5 a fabs 5 12 0 3 5 4 0 1 5 2 5 97 int 99 5 5 104 5 double 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 38 3 自增與自減運(yùn)算符 自增運(yùn)算使單個(gè)變量的值增 自減運(yùn)算使單個(gè)變量的值減 用法與運(yùn)算規(guī)則 1 前置運(yùn)算 運(yùn)算符放在變量之前 i i 先使變量的值增 或減 然后再以變化后的值參與其它運(yùn)算 即先增減 后運(yùn)算 2 后置運(yùn)算 運(yùn)算符放在變量之后 i i 變量先參與其它運(yùn)算 然后再使變量的值增 或減 即先運(yùn)算 后增減 例如 等價(jià)于i i 1 j i i 所以i的值為4 j的值為3 i j i 所以i的值為4 j的值為4 1 i i 2 i 3 j i 3 i 3 j i 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 39 結(jié)合性 自右至左 如 i 2 j i 等價(jià)于 j i 即 j i i 與 是同優(yōu)先級(jí)所以i的值為3 j的值為 2 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 注意 或 自增與自減運(yùn)算符的使用 如 設(shè)i 3 k i i i k 如 設(shè)i 3 j 4 k i j k 40 案例2 4 自增 自減運(yùn)算符的用法與運(yùn)算規(guī)則示例 程序功能 自增 自減運(yùn)算符的用法與運(yùn)算規(guī)則示例 main intx 6 y printf x d n x 輸出x的初值 y x 前置運(yùn)算 printf y x x d y d n x y y x 后置運(yùn)算 printf y x x d y d n x y 程序運(yùn)行結(jié)果 x 6y x x 7 y 7y x x 6 y 7 41 思考題 如果將案例 y x 語(yǔ)句中的前置運(yùn)算改為后置 y x y x 語(yǔ)句中的后置運(yùn)算改為前置 y x 程序運(yùn)行結(jié)果會(huì)如何 說(shuō)明 1 自增 自減運(yùn)算 常用于循環(huán)語(yǔ)句中 使循環(huán)控制變量加 或減 以及指針變量中 使指針指向下 或上 一個(gè)地址 2 自增 自減運(yùn)算符 不能用于常量和表達(dá)式 例如 5 a b 等都是非法的 3 在表達(dá)式中 連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí) 很容易出錯(cuò) 所以最好避免這種用法 42 1 賦值運(yùn)算符賦值符號(hào) 就是賦值運(yùn)算符 它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量 賦值運(yùn)算符的一般形式為 變量 賦值表達(dá)式 優(yōu)先級(jí) 算術(shù) 關(guān)系 和 賦值 結(jié)合性 自右至左 例如 1 x y 12 4y值為12 x值為3 表達(dá)式的值為3 2 x y 12 4y值為3 x值為3 表達(dá)式的值為3 3 x y 12 4 y值為3 x值為3 表達(dá)式的值為3 4 x y 12 4 如果表達(dá)式值的類(lèi)型 與被賦值變量的類(lèi)型不一致 但都是數(shù)值型或字符型時(shí) 系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類(lèi)型 然后再賦值給變量 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 三 賦值運(yùn)算符和賦值表達(dá)式 43 2 復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的 復(fù)合賦值運(yùn)算的一般格式為 表達(dá)式1op 表達(dá)式2它等價(jià)于 表達(dá)式1 表達(dá)式1op 表達(dá)式2 當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí) 表達(dá)式外的一對(duì)圓括號(hào)才可缺省 否則可能出錯(cuò) 例如 x 3 等價(jià)于x x 3 y x 6 等價(jià)于y y x 6 而不是y y x 6 設(shè)a 12 計(jì)算表達(dá)式a a a 12和a a a 12的值C語(yǔ)言規(guī)定的10種復(fù)合賦值運(yùn)算符如下 復(fù)合算術(shù)運(yùn)算符 5個(gè) 復(fù)合位運(yùn)算符 5個(gè) 44 3 賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符 將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的表達(dá)式 稱為賦值表達(dá)式 1 一般格式變量 復(fù)合 賦值運(yùn)算符表達(dá)式 2 賦值表達(dá)式的值任何一個(gè)表達(dá)式都有一個(gè)值 賦值表達(dá)式也不例外 被賦值變量的值 就是賦值表達(dá)式的值 例如 a 5 這個(gè)賦值表達(dá)式 變量a的值 就是它的值 注意 復(fù)合運(yùn)算符是一個(gè)運(yùn)算符 但功能上 是兩個(gè)運(yùn)算符功能的組合 45 1 逗號(hào)運(yùn)算符 形式 逗號(hào)表達(dá)式1 逗號(hào)表達(dá)式2 逗號(hào)表達(dá)式n 求解過(guò)程 自左至右 依次計(jì)算各表達(dá)式的值 表達(dá)式n 的值即為整個(gè)逗號(hào)表達(dá)式的值 例如 逗號(hào)表達(dá)式 a 3 5 a 4 a 5 的值 20 先求解a 3 5 得a 15 再求a 4 60 最后求解a 5 20 所以逗號(hào)表達(dá)式的值 20 優(yōu)先級(jí) 最低 結(jié)合性 自左至右 表達(dá)式的值 最后一個(gè)表達(dá)式的值 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 四 其它運(yùn)算符 46 例如 aby表達(dá)式y(tǒng) a 4 b 5 a b 4549y a 4 b 5 a b 4599y a 4 b 5 a b 4559y a 4 b 5 a b 55510注意 C語(yǔ)言常用逗號(hào)作為分隔符 例如 inta 3 b 4 c 5 printf d d d a b c printf d d d a a b c c 結(jié)果為3 5 5 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 47 形式有兩種 sizeof變量名sizeof 類(lèi)型名 結(jié)果為整型數(shù) inta floatx printf d d sizeofa sizeofx printf d d sizeof int sizeof float 以上兩個(gè)printf語(yǔ)句結(jié)果均為2 4 例如 第2章C語(yǔ)言的基本數(shù)據(jù)類(lèi)型與表達(dá)式 3 求字節(jié)運(yùn)算符 sizeof 作用 求得變量或某種數(shù)據(jù)類(lèi)型所需的字節(jié)數(shù)- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言程序設(shè)計(jì) 教程 北京郵電 大學(xué)出版社
鏈接地址:http://m.kudomayuko.com/p-6333707.html