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