二級(jí)C之?dāng)?shù)據(jù)的輸入輸出.ppt
《二級(jí)C之?dāng)?shù)據(jù)的輸入輸出.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《二級(jí)C之?dāng)?shù)據(jù)的輸入輸出.ppt(65頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第二章基本數(shù)據(jù)類型及數(shù)據(jù)的輸入輸出 2 0預(yù)備知識(shí)2 1標(biāo)識(shí)符 常量與變量2 2數(shù)據(jù)類型2 3運(yùn)算符和表達(dá)式練習(xí)與實(shí)踐 2 0預(yù)備知識(shí)計(jì)算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換數(shù)碼 基與權(quán)數(shù)碼 表示數(shù)的符號(hào)基 數(shù)碼的個(gè)數(shù)權(quán) 每一位所具有的值數(shù)制 十進(jìn)制 4956 4 10 9 10 5 10 6 10 二進(jìn)制 1011 1 2 0 2 1 2 1 2 十六進(jìn)制 81AE 8 16 1 16 10 16 14 16 八進(jìn)制 4275 4 8 2 8 7 8 5 8 各種進(jìn)制之間的轉(zhuǎn)換二進(jìn)制 八進(jìn)制 十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法 按權(quán)相加 各種進(jìn)制之間的轉(zhuǎn)換 整數(shù) 二進(jìn)制 八進(jìn)制 十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法 按權(quán)相加 十進(jìn)制轉(zhuǎn)換成二進(jìn)制 八進(jìn)制 十六進(jìn)制原理 方法 連續(xù)除以基 從低到高記錄余數(shù) 直至商為0 二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成八進(jìn)制 從右向左 每3位一組 不足3位左補(bǔ)0 轉(zhuǎn)換成八進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制 用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù) 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成十六進(jìn)制 從右向左 每4位一組 不足4位左補(bǔ)0 轉(zhuǎn)換成十六進(jìn)制十六進(jìn)制轉(zhuǎn)換成二進(jìn)制 用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù) 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 字節(jié)和位內(nèi)存以字節(jié)為單元組成每個(gè)字節(jié)有一個(gè)地址一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成每個(gè)二進(jìn)位的值是0或1 數(shù)值的表示方法 原碼 反碼和補(bǔ)碼原碼 最高位為符號(hào)位 其余各位為數(shù)值本身的絕對(duì)值反碼 正數(shù) 反碼與原碼相同負(fù)數(shù) 符號(hào)位為1 其余位對(duì)原碼取反補(bǔ)碼 正數(shù) 原碼 反碼 補(bǔ)碼相同負(fù)數(shù) 最高位為1 其余位為原碼取反 再對(duì)整個(gè)數(shù)加1 9 5 49 7 16 14 12 為什么用補(bǔ)碼表示 25 19 25 19 25 10 00011001 2 19 10 11101101 200011001 11101101 100000110 為什么用補(bǔ)碼表示 19 25 19 25 19 10 00010011 2 25 10 11100111 200010011 11100111 11111010 6 引入補(bǔ)碼之后符號(hào)位也進(jìn)入了運(yùn)算 不用再單獨(dú)處理符號(hào)位 負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù) 最高位不動(dòng) 其余位取反加1 例補(bǔ)碼 11111001取反 10000110加1 10000111 7 2 1常量與變量標(biāo)識(shí)符定義 用來標(biāo)識(shí)變量 常量 函數(shù)等的字符序列組成 只能由字母 數(shù)字 下劃線組成 且第一個(gè)字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長(zhǎng)度 最長(zhǎng)32個(gè)字符 不同的c語(yǔ)言編譯器規(guī)定長(zhǎng)度不同 命名原則 見名知意不宜混淆如l與I o與0 例 判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 12314 2005 4 以下不能定義為用戶標(biāo)識(shí)符是A MainB 0C intD sizeof M D John 3days 33 char 123 a b 32個(gè)關(guān)鍵字 由系統(tǒng)定義 不能重作其它定義 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 一般用大寫字母是宏定義預(yù)處理命令 不是C語(yǔ)句直接常量 整型常量實(shí)型常量字符常量字符串常量 如 definePRICE30 常量定義 程序運(yùn)行時(shí)其值不能改變的量 即常數(shù) 分類 符號(hào)常量 用標(biāo)識(shí)符代表常量定義格式 define符號(hào)常量常量 例符號(hào)常量舉例 definePRICE30main intnum total num 10 total num PRICE printf total d total 運(yùn)行結(jié)果 total 300 變量 其值可以改變的量概念 每個(gè)變量有一個(gè)名字 用標(biāo)識(shí)符表示 每個(gè)變量有一個(gè)存儲(chǔ)空間 存儲(chǔ)單元 該單元中的狀態(tài)所表示的數(shù)為此時(shí)變量的值 變量初始化 定義時(shí)可以賦初值 合法標(biāo)識(shí)符 變量的使用 必須先定義 后使用 定義可以放在函數(shù)體的前部 也可以放在函數(shù)的外部或復(fù)合語(yǔ)句的開頭 變量定義的一般格式 數(shù)據(jù)類型變量1 變量2 變量n 如 inta b c floatx y 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 例2floata b c c a b Illegaluseoffloatingpointinfunctionmain 變量定義位置 一般放在函數(shù)開頭 例1intstudent stadent 19 Undefinedsymbol statent infunctionmain 每一個(gè)變量都有一個(gè)類型 表明了為它的存儲(chǔ)屬性 分配空間的大小 表示的數(shù)的范圍 所能進(jìn)行的運(yùn)算 例2 1main floatlength area radius length為周長(zhǎng) area為面積 radius半徑 printf nEnteraradius scanf f 程序的運(yùn)行情況為 Enteraradius 2 8 lengthis 17 584000areais 24 617599 2 2數(shù)據(jù)類型數(shù)據(jù)類型總表 數(shù)據(jù)類型決定 1 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2 數(shù)據(jù)取值范圍3 其上可進(jìn)行的操作 2 2 1整數(shù)類型整數(shù)類型的標(biāo)識(shí)符是int 整型數(shù)據(jù)根據(jù)其占用的內(nèi)存字節(jié)數(shù)不同 可加限定詞 short 短整型 int long 長(zhǎng)整型 short int long可用sizeof 類型標(biāo)識(shí)符 測(cè)量unsignedshort 無(wú)符號(hào)短整型 unsignedint 無(wú)符號(hào)整型 unsignedlong 無(wú)符號(hào)長(zhǎng)整型 其中short和long的引入是為滿足實(shí)際要求的不同長(zhǎng)度的整數(shù) 而經(jīng)unsigned限定詞限定的整數(shù)總是正的 整型常量 整常數(shù) 三種形式 十進(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開頭 后跟0 9 a f A F表示 如0 x123 0Xff注意 只有十進(jìn)制數(shù)可以是負(fù)數(shù) 而八進(jìn)制 十六進(jìn)制只能是正數(shù) 例12與12L 例30000為int型65536為longint型 問題 0123 100 x123 100Xff 10 整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型 一個(gè)整數(shù)若值在 32768 32767內(nèi) 則默認(rèn)為它是int型 一個(gè)整數(shù)若值在 2147483648 2147483647之間 可使用長(zhǎng)整型常量表示 在整常量后加字母l或L 認(rèn)為它是longint型常量無(wú)符號(hào)數(shù)也可用后綴表示 整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為 U 或 u 例如 358u 0 x38Au 235Lu均為無(wú)符號(hào)數(shù) 0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整數(shù)A5 其十進(jìn)制為165 一個(gè)非負(fù)的整數(shù) 只要它的值不超過相應(yīng)變量的取值范圍 就可以賦給unsigned型變量 例如 可以將6000賦給一個(gè)unsignedint型變量 但卻不可以將66000賦給一個(gè)unsignedint型變量 將會(huì)出現(xiàn)溢出錯(cuò)誤 整型變量定義方法 inta1 a2 unsignedintb1 b2 一個(gè)整型常量只可以賦給能容納下其值的整型變量 如a1 a2的取值范圍為 32768 32767b1 b2的取值范圍為0 65535如果 a1 65535 或者 b1 1 在內(nèi)存中數(shù)值將不是所賦的數(shù)值 2 2 2實(shí)數(shù)類型實(shí)數(shù)類型分為單精度 float 和雙精度 double 類型 二者的區(qū)別在于所占存儲(chǔ)位的多少 從而決定了其取值范圍 通常以32位 bits 來存儲(chǔ)單精度實(shí)數(shù)型數(shù)據(jù) 以64位來存儲(chǔ)雙精度實(shí)型數(shù)據(jù) 實(shí)型常量 實(shí)數(shù)或浮點(diǎn)數(shù) 表示形式 小數(shù)形式 由數(shù)字和小數(shù)點(diǎn)組成 小數(shù)點(diǎn)的左右至少一邊要有數(shù)字 小數(shù)形式表示的實(shí)型常量必須要有小數(shù)點(diǎn) 必須有小數(shù)點(diǎn) 如0 123 123 123 0 0 0 123 指數(shù)形式 由尾數(shù) e或E和指數(shù)部分組成 E的兩邊都至少要有一位數(shù)且E的右邊只允許是整數(shù)形式 e或E之前必須有數(shù)字 指數(shù)必須為整數(shù) 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 1 6e 2 5e31 234e04 表示指數(shù)8進(jìn)制 1 234e 4 實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F 認(rèn)為它是float型 實(shí)型變量實(shí)型變量的說明形式如下 float變量名1 變量名2 變量名n double變量名1 變量名2 變量名n float 占4字節(jié) 提供7位有效數(shù)字double 占8字節(jié) 提供15 16位有效數(shù)字 例floata a 111111 111 a 111111 1 doubleb b 111111 111 b 111111 111 floata b c doublex y 例2 2 實(shí)型變量的有效數(shù)字 main doublea a 6 152367864359046178294901 printf n 25 20f a 輸出結(jié)果為 6 15236786435904648000在這個(gè)例子中 a被賦值了一個(gè)有效位數(shù)為25位的數(shù)字 但由于a是double類型的 所以a只能接收15 16位有效數(shù)字 在printf語(yǔ)句中 我們使用了 20 18f這樣的格式符號(hào) 這指示printf語(yǔ)句在輸出a時(shí)總長(zhǎng)度應(yīng)為25位 小數(shù)點(diǎn)位數(shù)占20位 輸出的結(jié)果顯然顯示了25位數(shù) 但只有6 152367864359046共16位有效數(shù)字被正確顯示出來 后面的數(shù)字是一些無(wú)效的數(shù)值 這就表明double型的數(shù)據(jù)只接收15 16位有效數(shù)字 2 2 3字符類型整型 實(shí)型都是數(shù)值型 是大家比較熟悉的 除數(shù)值型外 還有一類數(shù)據(jù)是計(jì)算機(jī)經(jīng)常處理的數(shù)據(jù) 這就是字符型 字符型數(shù)據(jù)包含的是一個(gè)字符集 一般用的是ASCII碼字符集見附錄A p249 字符集中的每一個(gè)字符都有一個(gè)序號(hào) 稱為ASCII碼 ASCII碼大的字符比ASCII碼小的字符值大 字符類型的標(biāo)識(shí)符是char 字符常量定義 用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符 字符常量的值 該字符的ASCII碼值 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 如 A 65 a 97 0 48 n 10 如 a A n 101 轉(zhuǎn)義字符 反斜線后面跟一個(gè)字符或一個(gè)代碼值表示 例轉(zhuǎn)義字符舉例 ch2 001 c ch2 004 c main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 運(yùn)行結(jié)果 屏幕顯示 ABCIsay Howareyou CProgram Turbo C 例main printf Y b n 運(yùn)行結(jié)果 屏幕顯示 打印機(jī)輸出 字符型變量char變量名1 變量名2 變量名n 如 charc1 c2 一個(gè)字符型變量的值只能是一個(gè)單個(gè)字符 在內(nèi)存中占一個(gè)字節(jié) 字符變量存放的是字符的ASCII碼 char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算 由于字符型變量在內(nèi)存中是以字符的ASCII碼 一個(gè)無(wú)符號(hào)整數(shù)的形式來存放的 所以在一定范圍內(nèi) 字符型數(shù)據(jù)和整型數(shù)據(jù)是可以互相通用的 二者的區(qū)別僅在于 字符型常量占一個(gè)字節(jié) 而整型常量占兩個(gè)字節(jié) 例a D a 68 x A 5 x 65 5 s G s 33 71 例2 3 將小寫字母轉(zhuǎn)化為大寫字母 main charc1 c2 c1 x c2 y c1 c1 32 c2 c2 32 printf n c c x1 x2 程序的輸出結(jié)果是 X Y這個(gè)例子是將小寫字母轉(zhuǎn)化為大寫字母的程序 我們?cè)趯?duì)ASCII碼字符表進(jìn)行觀察后會(huì)發(fā)現(xiàn) 大小寫對(duì)應(yīng)的字母 它們之間的ASCII碼正好相差32 利用這個(gè)特性和上一個(gè)特性 我們可以編寫出非常簡(jiǎn)單的大小寫字母轉(zhuǎn)換程序 字符常量與字符串常量不同 字符串常量定義 用雙引號(hào) 括起來的字符序列存儲(chǔ) 每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志 例 charch ch A 沒有字符串變量 用字符數(shù)組存放 15 2006 4 以下能正確定義字符串的語(yǔ)句是A charstr 064 B charstr x43 C charstr D charstr 0 基本數(shù)據(jù)類型 整型 字符型 實(shí)型 有 無(wú) 說明 數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同 上表以IBMPC機(jī)為例 例 ch2 003 c definePRICE12 5main intnum 3 floattotal charch1 ch2 D total num PRICE ch1 ch2 A a printf total f ch1 c n total ch1 運(yùn)行結(jié)果 total 37 500000 ch1 d 2 3運(yùn)算符和表達(dá)式 學(xué)習(xí)運(yùn)算符應(yīng)注意 運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向結(jié)果的類型 2 3 1算術(shù)運(yùn)算2 3 2賦值運(yùn)算2 3 3自增 自減運(yùn)算2 3 4關(guān)系運(yùn)算與邏輯運(yùn)算2 3 5條件運(yùn)算2 3 6逗號(hào)運(yùn)算2 3 7位運(yùn)算2 3 8類型轉(zhuǎn)換 34種運(yùn)算符 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 位運(yùn)算符 賦值運(yùn)算符 及其擴(kuò)展條件運(yùn)算符 逗號(hào)運(yùn)算符 指針運(yùn)算符 求字節(jié)數(shù) sizeof強(qiáng)制類型轉(zhuǎn)換 類型 分量運(yùn)算符 下標(biāo)運(yùn)算符 其它 2 3 1算術(shù)運(yùn)算2 3 1 1算術(shù)運(yùn)算符基本算術(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 5 2 例5 2 2 5 2 0 2 5 例5 2 1 5 2 11 10 15 1 05 5 2 2 3 1 2算術(shù)表達(dá)式及其書寫特點(diǎn)算術(shù)表達(dá)式是用算術(shù)運(yùn)算符 圓括號(hào)將運(yùn)算對(duì)象連接起來的符合C語(yǔ)言的語(yǔ)法規(guī)則的式子 其中 運(yùn)算對(duì)象可以是常量 變量 表達(dá)式 函數(shù)等等 書寫時(shí)注意以下幾點(diǎn) C表達(dá)式中的乘號(hào)不能省略 例如 數(shù)學(xué)式b2 4ac相應(yīng)的C表達(dá)式應(yīng)寫成 b b 4 a c C表達(dá)式中只能使用系統(tǒng)允許的標(biāo)識(shí)符 例如 數(shù)學(xué)式 r2相應(yīng)的C表達(dá)式應(yīng)寫成 3 14159 r r C表達(dá)式中的內(nèi)容必須書寫在同一行 不允許有分子分母形式 必要時(shí)要利用圓括號(hào)保證運(yùn)算的順序 例如 c d相應(yīng)的C表達(dá)式應(yīng)寫成 a b c d C表達(dá)式不允許使用方括號(hào)和花括號(hào) 只能使用圓括號(hào)來幫助限定運(yùn)算順序 可以使用多層圓括號(hào) 但左右括號(hào)必須配對(duì) 運(yùn)算時(shí)從內(nèi)層圓括號(hào)開始 由內(nèi)向外依次計(jì)算表達(dá)式的值 2 3 2賦值運(yùn)算賦值運(yùn)算符 賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符 賦值表達(dá)式格式 變量標(biāo)識(shí)符 表達(dá)式作用 將賦值號(hào)右邊的表達(dá)式計(jì)算出來 將其值賦給左邊的一個(gè)變量 復(fù)合賦值運(yùn)算符種類 含義 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 2 3 2 3賦值運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí) 14結(jié)合方向 自右向左左側(cè)必須是變量 不能是常量或表達(dá)式 每個(gè)表達(dá)式都有一個(gè)值 當(dāng)然每個(gè)值都有所屬的類型 賦值表達(dá)式的值與變量值相等 且可嵌套 賦值轉(zhuǎn)換規(guī)則 使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型 例3 x 2 y a b 3 例floatf inti i 10 f i 則f 10 0 例inti i 2 56 結(jié)果i 2 例 a b c 5a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表達(dá)式值為5 a b c值為5 b 5 a 5 表達(dá)式值11 c 6 a 11 表達(dá)式值10 a 10 b 4 c 6 表達(dá)式值5 a 5 b 10 c 2 例 a 12 a a a a 例 inta 2 a 4 1 a a a a 3 a 264等價(jià)于a a a a a a a 0等價(jià)于a a a a a a a a 3 不同類型數(shù)據(jù)間的轉(zhuǎn)換隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換 不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換 把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換 輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換 實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則 不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型 顯式轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換 一般形式 類型名 表達(dá)式 例 int x y int x y double 3 2 int 3 6說明 強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量 原變量類型不變 例main floatx inti x 3 6 i int x printf x f i d x i 結(jié)果 x 3 600000 i 3 精度損失問題 2 3 3自增 自減運(yùn)算自增 自減運(yùn)算符 表達(dá)式 結(jié)合性 優(yōu)先級(jí)作用 使變量值加1或減1種類 前置 i i 先執(zhí)行i 1或i 1 再使用i值 后置i i 先使用i值 再執(zhí)行i 1或i 1 例j 3 k j 等價(jià)于 j k j j 3 k j 等價(jià)于 k j 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 每個(gè)表達(dá)式都有一個(gè)值 當(dāng)然每個(gè)值都有所屬的類型 i 中表達(dá)式 i 的值是變量i在 之前的值 但i 的值已經(jīng)增1 i 中表達(dá)式 i 的值是變量i在 之后的值 不能用于常量和表達(dá)式 如5 a b 結(jié)合方向 自右向左優(yōu)先級(jí) 2 3 4 例 i i i 3 printf d i 3 例 i i 3 printf d i 使用自增 自減運(yùn)算符的注意事項(xiàng) 對(duì)于形如a b的表達(dá)式 C語(yǔ)言的編譯系統(tǒng)在處理時(shí)盡可能多的自左至右將若干個(gè)字符結(jié)合成一個(gè)運(yùn)算符 因此 a b被理解為 a b 而不是a b 為避免產(chǎn)生誤解 建議將此表達(dá)式寫成 a b的形式 例如 x i i i 應(yīng)被理解為z i i i 自增 自減運(yùn)算符使得C的表達(dá)式靈活 簡(jiǎn)潔 但有時(shí)候會(huì)使初學(xué)者迷惑 若使用不當(dāng) 會(huì)產(chǎn)生意外的后果 這就需要在使用時(shí)尤其注意 當(dāng)一個(gè)表達(dá)式中 含有若干個(gè)子表達(dá)式時(shí) ANSIC沒有規(guī)定運(yùn)算符和運(yùn)算對(duì)象的計(jì)算次序 因此不同編譯系統(tǒng)處理的順序可能不同 例如 x a b c d無(wú)所謂 例如 a 3 y a a 不同的編譯系統(tǒng)有兩種處理方式 結(jié)果不同 A 按從左到右的順序處理為 先取a的值3 再計(jì)算 a a的值自增為4 子表達(dá)式 a的值也為4 所以相乘的結(jié)果為12 B 按從右到左的順序處理為 先計(jì)算 a a的值自增為4 子表達(dá)式 a的值也為4 再取a的值為4 所以相乘的結(jié)果為16 在一個(gè)表達(dá)式中 出現(xiàn)對(duì)同一個(gè)變量的多次自增 自減運(yùn)算時(shí) 有的編譯系統(tǒng)按從左到右的次序處理 而有些系統(tǒng)一次性的處理這些運(yùn)算是從右到左 如TURBOC2 0系統(tǒng) 請(qǐng)看下列程序的輸出結(jié)果 main inti 6 k 6 a b a i i i b k k k printf ni d k d i k printf na d b d a b 若按從左到右的次序處理 預(yù)期的運(yùn)行結(jié)果為 i 9 k 9a 21 b 24 TC2 0程序的運(yùn)行結(jié)果如下 i 9 k 9a 18 b 27 在調(diào)用函數(shù)時(shí) 對(duì)于實(shí)參的求值順序 ANSIC也沒有規(guī)定 有的系統(tǒng)按從左到右的順序求值 有的相同按從右到左的順序求值 例3 2 main inti 5 printf n d d i i 若按從左到右的次序處理 預(yù)期的運(yùn)行結(jié)果為 5 6 TC2 0程序的運(yùn)行結(jié)果如下 6 6 編寫程序時(shí) 應(yīng)注意把可讀性放在第一位 避免編寫晦澀難懂 容易引起誤解的程序 尤其在使用自增 自減運(yùn)算符時(shí) 盡量不要使用易于誤解的表達(dá)方式 為了清晰的表達(dá)編程者的意圖 可以將一個(gè)復(fù)雜的語(yǔ)句分解成多個(gè)簡(jiǎn)單的語(yǔ)句 例如 A y a a 可改寫為b a y a b B printf n d d i i 可改寫為k i printf n d d k i a i i i 可改寫為 x i y i z i a x y z 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符種類 結(jié)合方向 自左向右優(yōu)先級(jí)別 例c a b c a b a b c a b ca bc a b c 關(guān)系表達(dá)式的值 是邏輯值 真 或 假 用1和0表示 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 表達(dá)式值1 表達(dá)式值1 表達(dá)式值0 d 1 f 0 關(guān)系運(yùn)算注意 例若a 0 b 0 5 x 0 3 則a x b的值為 0 例5 2 7 8在C中是允許的 值為 0 例inti 1 j 7 a a i j 4 0 則a 2 例 a 0結(jié)果為 A 100結(jié)果為 1 0 關(guān)系運(yùn)算注意 例注意區(qū)分 與 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 邏輯運(yùn)算符和表達(dá)式邏輯運(yùn)算符種類 邏輯運(yùn)算真值表 C語(yǔ)言中 運(yùn)算量 0表示 假 非0表示 真 運(yùn)算結(jié)果 0表示 假 1表示 真 例ab x ya b x y a a b 優(yōu)先級(jí) 結(jié)合方向 a x x b a b x y a b x y a a b 優(yōu)先級(jí) 結(jié)合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值為1 值為0 值為1 值為1 值為1 值為1 5 3 2 8 4 0 值為1 優(yōu)先級(jí) 結(jié)合方向 短路特性 邏輯表達(dá)式求解時(shí) 并非所有的邏輯運(yùn)算符都被執(zhí)行 只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí) 才執(zhí)行該運(yùn)算符 例a m a b n c d 結(jié)果m 0 n 1 條件運(yùn)算符與表達(dá)式一般形式 expr1 expr2 expr3執(zhí)行過程功能 相當(dāng)于條件語(yǔ)句 但不能取代一般if語(yǔ)句 例求a b printf a b d n b 0 a b a b 例 a b Y N x 2 1 1 0 x 0 x x c a c z c a A c 條件運(yùn)算符可嵌套如x 0 1 x 0 1 0 優(yōu)先級(jí) 13 結(jié)合方向 自右向左如a b a c d c d a b a c d c d expr1 expr2 expr3類型可不同 表達(dá)式值取較高的類型 例x a b x 0 表達(dá)式值為 b x 0 表達(dá)式值為 a x y 1 1 5 x y 值為1 0 x y 值為1 5 逗號(hào)運(yùn)算符和表達(dá)式形式 表達(dá)式1 表達(dá)式2 表達(dá)式n結(jié)合性 從左向右優(yōu)先級(jí) 15逗號(hào)表達(dá)式的值 等于表達(dá)式n的值用途 常用于循環(huán)for語(yǔ)句中 例a 3 5 a 4a 3 5 a 4 a 5例x a 3 6 3 x a 3 6 a例a 1 b 2 c 3 printf d d d a b c printf d d d a b c b c a 15 表達(dá)式值60 a 15 表達(dá)式值20 賦值表達(dá)式 表達(dá)式值18 x 18 逗號(hào)表達(dá)式 表達(dá)式值18 x 3 1 2 3 3 2 3 逗號(hào)運(yùn)算符和表達(dá)式形式 表達(dá)式1 表達(dá)式2 表達(dá)式n結(jié)合性 從左向右優(yōu)先級(jí) 15逗號(hào)表達(dá)式的值 等于表達(dá)式n的值用途 常用于循環(huán)for語(yǔ)句中 例 ch2 6 c includemain intx y 7 floatz 4 x y y 6 y z printf x d n x 運(yùn)行結(jié)果 x 3 位運(yùn)算1 運(yùn)算對(duì)象只能是整型或字符型數(shù)據(jù) 不能是實(shí)型數(shù)據(jù) 本文由小編推薦- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 二級(jí) 數(shù)據(jù) 輸入輸出
鏈接地址:http://m.jqnhouse.com/p-4382888.html