




已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章數(shù)據(jù)類型 運(yùn)算符與表達(dá)式 程序是解決某種問題的一組指令的有序集合 著名計(jì)算機(jī)科學(xué)家沃思 NikiklausWirth 提出一個(gè)公式 程序 數(shù)據(jù)結(jié)構(gòu) 算法 程序是什么 對(duì)數(shù)據(jù)的描述 在C語(yǔ)言中 體現(xiàn)為數(shù)據(jù)類型的描述 對(duì)數(shù)據(jù)處理的描述 是為解決一個(gè)問題而采取的方法和步驟 是程序的靈魂 結(jié)論 學(xué)好C語(yǔ)言首先就必須十分了解C語(yǔ)言的數(shù)據(jù)類型 運(yùn)算符與表達(dá)式 3 1C語(yǔ)言數(shù)據(jù)類型 數(shù)據(jù)類型決定 1 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2 數(shù)據(jù)取值范圍3 其上可進(jìn)行的操作 本章所介紹的數(shù)據(jù)類型 3 2常量 變量和標(biāo)識(shí)符1 標(biāo)識(shí)符定義 用來標(biāo)識(shí)變量 常量 函數(shù)等的字符序列組成 只能由字母 數(shù)字 下劃線組成 且第一個(gè)字母必須是字母或下劃線C語(yǔ)言的關(guān)鍵字不能用作變量名大小寫敏感長(zhǎng)度 有效長(zhǎng)度為32個(gè)字符 隨系統(tǒng)而異 但至少前8個(gè)字符有效命名原則 變量名和函數(shù)名中的英文字母一般用小寫 以增加可讀性見名知意不宜混淆如l與I o與0 在TC2 0及BC3 1中 變量名 標(biāo)識(shí)符 的有效長(zhǎng)度為 個(gè)字符 缺省值為 但在VC中其長(zhǎng)度可達(dá)到255 例 判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 字符非法 數(shù)字3不可作首字符 字符非法 char是關(guān)鍵字 字符非法 不可作首字符 3 2常量 變量和標(biāo)識(shí)符2 常量定義 程序運(yùn)行時(shí)其值不能改變的量 即常數(shù) 常量的分類 直接常量 值常量 整型常量 10 15 10 30實(shí)型常量 12 5 30 0 1 5字符常量 A b c 字符串常量 sum A 123 符號(hào)常量用標(biāo)識(shí)符來代表常量 其定義格式為 define符號(hào)常量常量 defineNUM20 definePI3 1415926 include definePRICE30voidmain intnum total num 10 total num PRICE printf total d total 運(yùn)行結(jié)果 total 300 行尾不能有分號(hào)define前面一定要有 符號(hào)常量名最好使用大寫符號(hào)常量名最好有意義 3 2常量 變量和標(biāo)識(shí)符3 變量定義 程序運(yùn)行時(shí)其值可以被改變的量變量的兩要素 變量名 變量值變量的定義格式 變量的初始化 定義時(shí)賦初始值變量的使用 先定義 后賦值變量定義位置 一般放在函數(shù)開頭 存儲(chǔ)類型 數(shù)據(jù)類型變量名1 變量名2 變量名n intx y z floatradius length area charch 決定分配字節(jié)數(shù)和數(shù)的表示范圍 合法標(biāo)識(shí)符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 例1 intstudent stadent 19 Undefinedsymbol statent infunctionmain 例2 floata b c c a b Illegaluseoffloatingpointinfunctionmain 3 3簡(jiǎn)單數(shù)據(jù)類型與表示范圍 1 整型數(shù)據(jù) 整型常量 十進(jìn)制整數(shù) 由數(shù)字0 9和正負(fù)號(hào)表示 如 123 456 0八進(jìn)制整數(shù) 由數(shù)字0開頭 后跟數(shù)字0 7表示 如 0123 011十六進(jìn)制整數(shù) 由0 x或0X開頭 后跟0 9 a f A F表示 如0 x123 0Xff 定義整數(shù)的符號(hào)常量 defineNUM120 十進(jìn)制數(shù)20 defineNUM2020 八進(jìn)制數(shù) 十進(jìn)制16 defineNUM30 x2a 十六進(jìn)制數(shù) 十進(jìn)制42 思考題 下列整型常量哪些是非法的 012 oX7A 00 078 0 x5Ac 0 xFFFF 0034 7B 首字符不能是字母o 八進(jìn)制數(shù)中不能有數(shù)字8 十進(jìn)制數(shù)中不能有字母B 2 整數(shù)在內(nèi)存中的表示 整數(shù)的數(shù)值在內(nèi)存中用補(bǔ)碼的形式存放 求一個(gè)整數(shù)補(bǔ)碼的方法 假設(shè)用n個(gè)二進(jìn)制位的內(nèi)存單元來存儲(chǔ)它 如果是正整數(shù) 采用符號(hào) 絕對(duì)值表示 即最高有效位 符號(hào)位 為0表示正 數(shù)的其余部分則表示數(shù)的絕對(duì)值 如果是負(fù)整數(shù) 則先寫出與該負(fù)數(shù)相對(duì)應(yīng)的正數(shù)的補(bǔ)碼表示 然后將其按位求反 最后在末位 最低位 加1 然后將上述求得的補(bǔ)碼的低n位存放于內(nèi)存單元之中 就得到了該整數(shù)在內(nèi)存中的表示 內(nèi)存單元的最高位是符號(hào)位 0表示正 1表示負(fù) 在TC2 0或BC3 1下 一個(gè)整數(shù)默認(rèn)情況下需要2個(gè)字節(jié) 16位 的內(nèi)存單元存放 而在VC6 0下 則需要4個(gè)字節(jié) 32位 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 14 對(duì)于16位的內(nèi)存單元 符號(hào)位 十進(jìn)制數(shù) 14兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 14 補(bǔ) 0000000000001110 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 14 對(duì)于32位的內(nèi)存單元 十進(jìn)制數(shù) 14四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 14 補(bǔ) 00000000000000000000000000001110 符號(hào)位 記住 數(shù)據(jù)在內(nèi)存中的存放位置是高字節(jié)放在高地址的存儲(chǔ)單元中 低字節(jié)放在低地址的存儲(chǔ)單元中 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 14 對(duì)于16位的內(nèi)存單元 符號(hào)位 十進(jìn)制數(shù) 14兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 14 補(bǔ) 0000000000001110 14 補(bǔ) 1111111111110010 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 14 對(duì)于32位的內(nèi)存單元 十進(jìn)制數(shù) 14四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 14 補(bǔ) 00000000000000000000000000001110 符號(hào)位 14 補(bǔ) 11111111111111111111111111110010 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 65537 對(duì)于16位的內(nèi)存單元 65537 補(bǔ) 010000000000000001 65537 補(bǔ) 101111111111111111 十進(jìn)制數(shù) 65537兩個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 符號(hào)位 真值為 1 不是 65537 2 整數(shù)在內(nèi)存中的表示 十進(jìn)制整數(shù) 65537 對(duì)于32位的內(nèi)存單元 十進(jìn)制數(shù) 65537四個(gè)字節(jié)的內(nèi)存實(shí)際存放形式 65537 補(bǔ) 00000000000000010000000000000001 符號(hào)位 表示負(fù) 65537 補(bǔ) 11111111111111101111111111111111 真值為 65537 為什么 65537這個(gè)數(shù)在16位內(nèi)存單元中的表示與在32位內(nèi)存單元中的表示不相同呢 這主要是因?yàn)?65537這個(gè)數(shù)超出了16位內(nèi)存單元表示數(shù)的范圍 所以實(shí)際存儲(chǔ)的值 1 與要表示的值 65537 不同 但 65537并沒有超出了32位內(nèi)存單元表示數(shù)的范圍 所以實(shí)際存儲(chǔ)的值就是其本身 因此 我們?cè)贑語(yǔ)言中對(duì)數(shù)據(jù)處理時(shí)必須要注意數(shù)據(jù)的表示范圍 以免引起不必要的錯(cuò)誤 3 整型變量 整型變量的定義 int變量名 變量名2 變量名n int必須小寫 至少一個(gè)空格 必須為合法的標(biāo)識(shí)符 以逗號(hào) 分隔 以分號(hào) 結(jié)尾 定義時(shí)可以賦初值 方法 在變量名后面增加 數(shù)值 例 inta intx y z intm 2 y 3 當(dāng)程序中定義了一個(gè)變量時(shí) 計(jì)算機(jī)會(huì)為這個(gè)變量分配一個(gè)相應(yīng)大小的內(nèi)存單元 因此 這個(gè)變量是有值的 它的值就是對(duì)應(yīng)內(nèi)存單元的值 如果定義時(shí)沒有賦初值 則這個(gè)值程序員是無法預(yù)知的 整型變量的分類 修飾符控制變量是否有符號(hào) signed 有符號(hào) 和unsigned 無符號(hào) 控制整型變量的值域范圍 short 短 和long 長(zhǎng) 有符號(hào)基本型 int inta 2 定義一個(gè)有符號(hào)整型變量a 并賦初值 2占一個(gè)機(jī)器字大小的內(nèi)存單元 TC下 變量占2個(gè)字節(jié) 16位 的內(nèi)存單元 VC6 0下 變量占4個(gè)字節(jié) 32位 的內(nèi)存單元 如果定義變量時(shí) 不指定signed 也不指定unsigned 則默認(rèn)為signed 有符號(hào) 符號(hào)位 變量a占用的內(nèi)存單元 2字節(jié) 有符號(hào)整型變量在內(nèi)存中的實(shí)際存放形式 假設(shè)在BC3 1下 無符號(hào)基本型 unsignedint或unsigned unsignedinta 2 定義一個(gè)無符號(hào)整型變量a 并賦初值2或unsigneda 2 占用的內(nèi)存單元字節(jié)數(shù)同int類型 與inta 2 等價(jià) unsignedinta 2 定義一個(gè)無符號(hào)整型變量a 并賦初值 2或unsigneda 2 無符號(hào)整型變量在內(nèi)存中的實(shí)際存放形式 假設(shè)在TC下 數(shù)據(jù)位 變量a占用的內(nèi)存單元 2字節(jié) 其值為 65534 注意 對(duì)于有符號(hào)數(shù)也好還是無符號(hào)數(shù)也好 其實(shí)在計(jì)算機(jī)內(nèi)存中表示是不加區(qū)分的 都是以其補(bǔ)碼形式表示 只是我們?cè)鯓涌创罡叨M(jìn)制位的問題 如果把最高位當(dāng)成符號(hào)位看待 則為有符號(hào)數(shù) 如果把最高位當(dāng)成數(shù)據(jù)位看待 則變?yōu)闊o符號(hào)數(shù) 例如 unsignedinta 2 printf d a 有符號(hào)輸出 則為 2printf u a 無符號(hào)輸出 則為65534 有符號(hào)短整型 shortint或short shortinta 2 定義一個(gè)有符號(hào)短整型變量a 并賦初值2或shorta 2 占用的內(nèi)存單元為2個(gè)字節(jié) 無論是TC還是VC 無符號(hào)短整型 unsignedshortint或unsignedshort unsignedshortinta 2 定義一個(gè)無符號(hào)短整型變量a 并賦初值2或unsignedshorta 2 占用的內(nèi)存單元字節(jié)數(shù)同short類型 在TC2 0下 unsignedshort類型與unsignedint類型是等價(jià)的 short int long c語(yǔ)言標(biāo)準(zhǔn)中要保證如左 在tc中前兩個(gè)內(nèi)存一樣 vc中后兩個(gè)一樣 有符號(hào)長(zhǎng)整型 longint或long longinta 234567 定義一個(gè)有符號(hào)長(zhǎng)整型變量a 并賦初值234567或longa 234567 占用的內(nèi)存單元為4個(gè)字節(jié) 無論是TC還是VC 無符號(hào)長(zhǎng)整型 unsignedlongint或unsignedlong unsignedlonginta 2 定義一個(gè)無符號(hào)長(zhǎng)整型變量a 并賦初值2或unsignedlonga 2 占用的內(nèi)存單元字節(jié)數(shù)同long類型 在VC中l(wèi)ong與int類型基本相同 均占四個(gè)字節(jié)的內(nèi)存單元 但在TC中 long類型與int類型只是所占字節(jié)不同外 long占4字節(jié) int占2字節(jié) 其它數(shù)據(jù)處理方法是一樣的 例 各種整型變量的定義 include defineSUM65535voidmain inta b 20 unsignedintc 0 xff longD a SUM D 301 printf a d n a printf b d n b printf c d n c printf D d n D 文件包含 頭文件說明 定義符號(hào)常量SUM 值為65535 定義兩個(gè)int型變量a和b b賦初值20 定義無符號(hào)整型變量c 并賦初值0 xff 定義長(zhǎng)整型變量D 對(duì)a賦值為SUM 這時(shí)a的值是65535 對(duì)D賦值為301 以有符號(hào)十進(jìn)制形式 d 顯示a的值 以有符號(hào)十進(jìn)制形式 d 顯示b的值 以有符號(hào)十進(jìn)制形式 d 顯示c的值 以有符號(hào)十進(jìn)制形式 d 顯示D的值 變量定義部分 語(yǔ)句執(zhí)行部分 在TC3 0下運(yùn)行結(jié)果 a 1b 20c 255D 301 在VC6 0下運(yùn)行結(jié)果 a 65535b 20c 255D 301 對(duì)于16位的有符號(hào)整型變量a來說 因65535在內(nèi)存中的形式為1111111111111111 最高位為1表示負(fù) 則其所對(duì)應(yīng)的十進(jìn)制數(shù)就為 1 4 整數(shù)常量的分類 根據(jù)其值所在范圍確定其數(shù)據(jù)類型 在TC2 0下 如果整型常量的值位于 32768 32767之間 C語(yǔ)言認(rèn)為它是int型常量 如果整型常量的值位于 2147483648 2147483647之間 C語(yǔ)言認(rèn)為它是long型常量 整型常量后加字母l或L 認(rèn)為它是longint型常量 比如123L 45l 0XAFL 無符號(hào)數(shù)也可用后綴表示 整型常數(shù)的無符號(hào)數(shù)的后綴為U或u 例如 358u 0 x38Au 235Lu均為無符號(hào)數(shù) 前綴 后綴可同時(shí)使用以表示各種類型的數(shù) 如0XA5Lu表示十六進(jìn)制無符號(hào)長(zhǎng)整數(shù)A5 其十進(jìn)制為165 其實(shí)整型常數(shù)這種表示無符號(hào)數(shù)意義不大 在機(jī)器內(nèi)部它還是用其補(bǔ)碼表示 例如 1U和 1在內(nèi)存中表示是一樣的 數(shù)據(jù)處理也一樣 所以有的教科書上說 常量無unsigned類型 其實(shí)有 但無意義 5 實(shí)型數(shù)據(jù) 實(shí)型常量 實(shí)數(shù)或浮點(diǎn)數(shù) 十進(jìn)制小數(shù)形式 由數(shù)字0 9和小數(shù)點(diǎn)組成 如 0 0 5 6 5 指數(shù)形式 由十進(jìn)制數(shù) 加階碼標(biāo)志e或E以及階碼 只能為整數(shù) 可以帶符號(hào) 組成 其一般形式為 aEn其中 a為十進(jìn)制數(shù) n為十進(jìn)制整數(shù) 都不可缺少 其可表示為a 10n 合法的實(shí)數(shù)表示 2 1E5表示2 1 105 3 7E 2表示3 7 10 2 非法的實(shí)數(shù)表示 345 無小數(shù)點(diǎn) E7 階碼標(biāo)志E之前無數(shù)字 5 無階碼標(biāo)志 50 E3 負(fù)號(hào)位置不對(duì) 實(shí)型變量 單精度實(shí)型 float floatf 3 14 g 這種定義的變量在內(nèi)存中占4個(gè)字節(jié) 32位 的存儲(chǔ)單元 雙精度實(shí)型 double doublex y 這種定義的變量在內(nèi)存中占8個(gè)字節(jié) 64位 的存儲(chǔ)單元 長(zhǎng)雙精度實(shí)型 longdouble longdoublex y 在TC下 這種定義的變量在內(nèi)存中占16個(gè)字節(jié) 128位 的存儲(chǔ)單元 注意 三種實(shí)數(shù)類型中 其精度是float double longdouble longfloat實(shí)際上就是double 因此 沒有l(wèi)ongfloat類型 所有的實(shí)型常量按照double類型處理 5 實(shí)型數(shù)據(jù) 實(shí)型數(shù)據(jù)的精度 includevoidmain floata 定義float型變量adoubleb c 定義double型變量b和ca 123 456789 對(duì)變量a賦值為123 456789b a 將變量a賦給變量bc 123 456789 對(duì)變量c賦值為123 456789printf a fb lfc lf n a b c 123 456787 123 456787 123 456789 a 123 456787b 123 456787c 123 456789 float型變量最多只能精確表示8個(gè)數(shù)字 因此顯示a的值時(shí) 只能有效顯示前面8個(gè)數(shù)字即123 45678 最后追加一位數(shù)字7是隨機(jī)的 6 字符型數(shù)據(jù)和字符串常量 字符型常量 定義 用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符 如 a A n 101 字符常量的值 該字符的ASCII碼值 如 A 65 a 97 0 48 n 10 轉(zhuǎn)義字符 反斜線后面跟一個(gè)字符或一個(gè)代碼值表示 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 例 轉(zhuǎn)義字符舉例 includevoidmain printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Visual C 運(yùn)行結(jié)果 屏幕顯示 ABCIsay Howareyou CProgram Visual C 例 voidmain printf Y b n 運(yùn)行結(jié)果 屏幕顯示 打印機(jī)輸出 字符串常量定義 用雙引號(hào) 括起來的字符序列存儲(chǔ) 每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志 例1 字符串 HELLO 在內(nèi)存中 例2 空串 0 字符常量與字符串常量不同 例 charch ch A 例 charch ch A 字符型變量字符型數(shù)據(jù)類型符是char 字符character 在內(nèi)存中占1個(gè)字節(jié) 8位 字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算存在有符號(hào)和無符號(hào)之分 默認(rèn)情況下為有符號(hào) 例 charch unsignedcharC B 例 a D a 68 x A 5 x 65 5 s G s 33 71 沒有字符串變量 用字符數(shù)組存放 7 簡(jiǎn)單數(shù)據(jù)類型的表示范圍 符號(hào)位 十六位整型數(shù)所表示的數(shù)據(jù)范圍 數(shù)據(jù)位 例 變量的存儲(chǔ)范圍 includevoidmain charch intx ch 80 50 x 80 50 printf ch d n ch printf x d n x ch 126x 130 為什么 十進(jìn)制數(shù)對(duì)應(yīng)的機(jī)器數(shù) 補(bǔ)碼 800000000001010000ch 500000000000110010 0000000010000010 10000010 符號(hào)位 真值 126 8 簡(jiǎn)單的數(shù)據(jù)輸出 C語(yǔ)言中沒有用于輸出的語(yǔ)句 只能通過標(biāo)準(zhǔn)庫(kù)函數(shù)的調(diào)用來完成數(shù)據(jù)的輸出任務(wù) 庫(kù)函數(shù)的一般調(diào)用格式為 函數(shù)名 參數(shù)1 參數(shù)2 參數(shù)n printf函數(shù) 例 printf Howareyou 輸出 Howareyou 例 inta 100 printf variablea d a 輸出 variablea 100 d 用于顯示有符號(hào)整型數(shù)據(jù) 如int short型數(shù)據(jù) u 用于顯示無符號(hào)整型數(shù)據(jù) 如unsignedint unsignedshort型數(shù)據(jù) f 用于顯示實(shí)型數(shù)據(jù) 如float型數(shù)據(jù) c 用于顯示字符型數(shù)據(jù) 如char型數(shù)據(jù) s 用于顯示字符串?dāng)?shù)據(jù) 格式控制符 例 簡(jiǎn)單的數(shù)據(jù)輸出 includevoidmain inta b unsignedintu longL charch floatf a 200 b 1 u b L u ch A f 32 17 printf a d t a printf b d n b printf u u t u printf L ld n L printf f f n f printf chis candvalueis d n ch ch printf IloveClanguage rYou n I后有三個(gè)空格 在VC下 a 200b 1u 4294967295L 1f 32 169998chisAandvalueis65YouloveClanguage 在BC下 a 200b 1u 65535L 65535f 32 169998chisAandvalueis65YouloveClanguage b的值是 1 在內(nèi)存中表示為 0 xffff BC下 0 xffffffff VC下 當(dāng)它賦給u時(shí) 由于u是無符號(hào)數(shù) 因此u的值是65535 BC下 4294967295 VC下 L是有符號(hào)長(zhǎng)整型 u是無符號(hào)整型 在BC下 L占4字節(jié) u占2字節(jié) 當(dāng)把u賦值給L時(shí) L的高2個(gè)字節(jié)為全0 因u無符號(hào) 故L的值為0 x0000ffff 即65535 但在VC下 L和u都占4字節(jié) 當(dāng)把u賦值給L時(shí) L的值為0 xffffffff 即 1 3 4C語(yǔ)言的運(yùn)算符與表達(dá)式 變量用來存放數(shù)據(jù) 運(yùn)算符則用來處理數(shù)據(jù) 用運(yùn)算符將變量和常量連接起來的符合C語(yǔ)法規(guī)則的式子被稱為表達(dá)式 運(yùn)算符的分類 單目運(yùn)算符 只帶一個(gè)操作數(shù)的運(yùn)算符 如 運(yùn)算符 雙目運(yùn)算符 帶兩個(gè)操作數(shù)的運(yùn)算符 如 運(yùn)算符 三目運(yùn)算符 帶三個(gè)操作數(shù)的運(yùn)算符 如 運(yùn)算符 學(xué)習(xí)運(yùn)算符時(shí)應(yīng)注意 運(yùn)算符的功能 該運(yùn)算符主要用于做什么運(yùn)算 與運(yùn)算量關(guān)系 要求運(yùn)算量的個(gè)數(shù)及運(yùn)算量的類型 運(yùn)算符的優(yōu)先級(jí) 表達(dá)式中包含多個(gè)不同運(yùn)算符時(shí)運(yùn)算符運(yùn)算的先后次序 運(yùn)算符的結(jié)合性 同級(jí)別運(yùn)算符的運(yùn)算順序 指左結(jié)合性還是右結(jié)合性 運(yùn)算結(jié)果的類型 表達(dá)式運(yùn)算后最終所得到的值的類型 1 賦值運(yùn)算符 賦值表達(dá)式 賦值運(yùn)算符 雙目運(yùn)算符 一般形式 變量 常量或變量或表達(dá)式 功能 將右邊常量或變量或表達(dá)式的值賦給左邊變量 例如 intx y z x 20 y x z x y 賦值表達(dá)式 定義 由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符 后面即將介紹 將一個(gè)變量和一個(gè)表達(dá)式連接起來的表達(dá)式 稱為賦值表達(dá)式 一般格式 變量 復(fù)合 賦值運(yùn)算符表達(dá)式 賦值表達(dá)式的值 被賦值變量的值 例如 a 5 這個(gè)賦值表達(dá)式 變量a的值 就是它的值 賦值語(yǔ)句 例如 x 8 a b c 5 定義 賦值表達(dá)式在其后面加分號(hào)就構(gòu)成了賦值語(yǔ)句 賦值運(yùn)算符及賦值表達(dá)式的使用 多個(gè)變量連續(xù)賦值 例如 a b c 10 a b c 10 結(jié)果 a b c的值都為10 賦值表達(dá)式的嵌套 例如 a b 2 c 3 a b 2 c 3 結(jié)果 b為2 c為3 a為b c即5 注意 賦值語(yǔ)句 左邊必須是變量名或?qū)?yīng)某特定內(nèi)存單元的表達(dá)式 后面的章節(jié)會(huì)遇到這樣的表達(dá)式 不能是常量或其它表達(dá)式 例如 30 a b 2 5 都是錯(cuò)誤的 賦值語(yǔ)句中的 表示賦值 不是代數(shù)中相等的意思 要表示相等的意思則應(yīng)用關(guān)系運(yùn)算符 表示 二者切勿混淆 2 強(qiáng)制類型轉(zhuǎn)換符 C語(yǔ)言的數(shù)據(jù)類型是可以相互轉(zhuǎn)換的 轉(zhuǎn)換的方法有兩種 一種是自動(dòng)轉(zhuǎn)換 一種是強(qiáng)制轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換 例如 inta 2 5 則a的值將是2 而不是2 5 這種自動(dòng)改變等號(hào)右邊表達(dá)式值的數(shù)據(jù)類型的操作稱為數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換 首先將等號(hào)右邊的表達(dá)式的值轉(zhuǎn)換成 左邊的數(shù)據(jù)類型 然后再賦值給等號(hào)左邊的變量 1 短長(zhǎng)度的數(shù)據(jù)類型 長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型 方法 直接將無符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分 長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分補(bǔ)零 無符號(hào)短長(zhǎng)度的數(shù)據(jù)類型 無符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型 xx x 無符號(hào)短長(zhǎng)度的數(shù)據(jù)類型 0 0 0 高位部分補(bǔ)0 例如 unsignedcharch 0 xfc unsignedinta 0 xff00 假設(shè)int數(shù)據(jù)為16位intb unsignedlongu b ch b的值將是0 x00fcu a u的值將是0 x0000ff00 如果將ch的值賦給 4 問b的值又是多少呢 0 x00fc 2 強(qiáng)制類型轉(zhuǎn)換符 自動(dòng)轉(zhuǎn)換 1 短長(zhǎng)度的數(shù)據(jù)類型 長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型 方法 直接將有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分 然后將低位部分的最高位 即有符號(hào)短長(zhǎng)度數(shù)據(jù)的符號(hào)位 向長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分?jǐn)U展 有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型 無符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型 zx x 有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型 z 符號(hào)位向高位部分?jǐn)U展 z z 符號(hào)位 例如 charch 2 inta 2 intb unsignedlongu b ch b的值將是2u a u的值將是0 xfffffffe 2 強(qiáng)制類型轉(zhuǎn)換符 自動(dòng)轉(zhuǎn)換 2 長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型 短長(zhǎng)度的數(shù)據(jù)類型 方法 直接截取長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分 長(zhǎng)度為短長(zhǎng)度的數(shù)據(jù)類型的長(zhǎng)度 作為短長(zhǎng)度數(shù)據(jù)類型的數(shù)據(jù) 例如 inta 32768 假設(shè)int數(shù)據(jù)為16位unsignedlongb 0 xffffaa00 charch intc ch a ch的值將是0c b c的值將是0 xaa00 3 長(zhǎng)度相同的數(shù)據(jù)類型轉(zhuǎn)換 方法 數(shù)據(jù)按照原樣復(fù)制即可 例如 inta 0 xff00 unsignedintb a b的值將是0 xff00 2 強(qiáng)制類型轉(zhuǎn)換符 強(qiáng)制轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的 其一般形式為 類型說明符 表達(dá)式 功能 把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型 其中 類型說明符 是強(qiáng)制類型轉(zhuǎn)換符 它的優(yōu)先級(jí)比較高 例 floatx 3 5 y 2 1 z inta a int x y 結(jié)果為5z int x y 結(jié)果為5 100000z double 3 2 結(jié)果為1 000000a int 3 6 結(jié)果為3 精度損失問題 注意 在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題 類型說明符和表達(dá)式都必須加括號(hào) 單個(gè)變量可以不加括號(hào) 例如 把 int x y 寫成 int x y則成了把x轉(zhuǎn)換成int型之后再與y相加了 無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換 都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換 而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的類型 例如 double a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量 其數(shù)據(jù)類型并未轉(zhuǎn)換成double型 基本算術(shù)運(yùn)算符 結(jié)合方向 從左向右優(yōu)先級(jí) 2 3 4 說明 可為單目運(yùn)算符時(shí) 右結(jié)合性兩整數(shù)相除 結(jié)果為整數(shù) 要求兩側(cè)均為整型數(shù)據(jù) 例 5 2 5 2 0 例 5 2 5 2 1 10 5 1 5 2 5 5 2 3 算術(shù)運(yùn)算符 算術(shù)表達(dá)式 2 2 5 1 1 1 0 1 表達(dá)式和算術(shù)表達(dá)式 3 算術(shù)運(yùn)算符 算術(shù)表達(dá)式 表達(dá)式 用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象 常量 變量和函數(shù)等 連接起來的 符合 語(yǔ)言語(yǔ)法規(guī)則的式子 算術(shù)表達(dá)式 表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符的表達(dá)式 運(yùn)算符優(yōu)先級(jí) 到目前為止 例 3 5 8 x y 2 1等 自增 自減運(yùn)算符 作用 使變量值加1或減1種類 前置 i i 先執(zhí)行i i 1或i i 1 再使用i值 后置i i 先使用i值 再執(zhí)行i i 1或i i 1 例 j 3 k j j 3 k j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 4 自增自減運(yùn)算符 符號(hào)運(yùn)算符 負(fù)號(hào)運(yùn)算符 減號(hào) 既是一個(gè)算術(shù)運(yùn)算符 又是一個(gè)負(fù)號(hào)運(yùn)算符 負(fù)號(hào)運(yùn)算符是單目運(yùn)算符 例如 a 2 那么 a的值就是 2 負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)比較高 與強(qiáng)制類型轉(zhuǎn)換符是同一個(gè)級(jí)別 自增 自減運(yùn)算符注意事項(xiàng) 和 運(yùn)算符只能用于變量 不能用于常量和表達(dá)式 因?yàn)?和 蘊(yùn)含著賦值操作 例如 5 a b 都是非法的表達(dá)式 負(fù)號(hào)運(yùn)算符 和強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的優(yōu)先級(jí)相同 當(dāng)這些運(yùn)算符連用時(shí) 按照從右向左的順序計(jì)算 即具有右結(jié)合性 兩個(gè) 和 之間不能有空格 在表達(dá)式中 連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí) 很容易出錯(cuò) 所以最好避免這種用法 例如 i 是非法的 自增 自減運(yùn)算 常用于循環(huán)語(yǔ)句中 使循環(huán)控制變變量加 或減 以及指針變量中 使指針指向下 或上 一個(gè)地址 4 自增自減運(yùn)算符 符號(hào)運(yùn)算符 例 intp i 2 j 3 p i p i p i j p i j p i j p i j p i j p i j p i i p i p i i p i 2 3 5 3 3 4 2 2 4 3 2 4 4 8 4 5 算術(shù)運(yùn)算符中數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 includevoidmain floata b c a 7 2 計(jì)算7 2得int型值3 因此a的值為3 0b 7 2 1 0 計(jì)算7 2得int型值3 再與1 0相乘 因此b的值為3 0c 1 0 7 2 先計(jì)算1 0 7得double型的結(jié)果7 0 然后再計(jì)算7 0 2 因此c的值是3 5printf a f b f c f a b c a 3 000000 b 3 000000 c 3 500000 6 逗號(hào)運(yùn)算符 逗號(hào)表達(dá)式 位運(yùn)算符 逗號(hào)表達(dá)式 用逗號(hào)連接起來的表達(dá)式 其一般形式為 表達(dá)式1 表達(dá)式2 表達(dá)式k 優(yōu)先級(jí) 優(yōu)先級(jí)最低 結(jié)合性 左結(jié)合性 即逗號(hào)表達(dá)式的求值順序是從左向右依此計(jì)算用逗號(hào)分隔的各表達(dá)式的值 逗號(hào)表達(dá)式的值 最后一個(gè)表達(dá)式的值就是整
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)星遙感影像開放總結(jié)模版
- 老舊小區(qū)煥新升級(jí)方案出爐
- 低空經(jīng)濟(jì)產(chǎn)業(yè)園發(fā)展規(guī)劃報(bào)告
- 以區(qū)塊鏈技術(shù)驅(qū)動(dòng)的幼兒園安全管理解決方案
- 區(qū)塊鏈金融創(chuàng)新金融服務(wù)的未來趨勢(shì)
- 醫(yī)企合作中的個(gè)性化健康管理方案探討
- 五年級(jí)考試卷子及答案
- 互聯(lián)網(wǎng)金融培訓(xùn)協(xié)議
- 施工勞務(wù)資質(zhì)證明協(xié)議
- 從源頭抓起醫(yī)療設(shè)備質(zhì)量控制的策略研究
- 蘇州工業(yè)園區(qū)應(yīng)急管理系統(tǒng)招聘筆試真題2023
- 《休閑鞋大底用聚氨酯原液編制說明》
- NB-T42090-2016電化學(xué)儲(chǔ)能電站監(jiān)控系統(tǒng)技術(shù)規(guī)范
- 勉縣房地產(chǎn)市場(chǎng)調(diào)研報(bào)告
- 《大學(xué)生美育》 課件 第七章 藝術(shù)美
- 2023年湖南省湘西州中考物理真題試卷(含答案)
- 網(wǎng)課智慧樹知道《人工智能引論(浙江大學(xué))》章節(jié)測(cè)試答案
- 2024我國(guó)聯(lián)合體施工協(xié)議書范本
- 2024年上海市中考英語(yǔ)試卷及答案
- 廣東省茂名市小升初語(yǔ)文期末試卷
- 金鏟鏟之戰(zhàn)游戲
評(píng)論
0/150
提交評(píng)論