已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章基本數據類型 運算符和表達式 2 1C語言的數據類型 2 1 1概述程序設計主要解決兩個問題 一個是動作 即怎樣做的問題 這由語句來實現 另一個是動作的對象 即數據的存放問題 這由數據類型來決定 世界上著名的計算機科學家沃斯 N Wirth 提出這樣一個公式 程序 數據結構 算法為什么要規(guī)定數據類型呢 不同數據類型的數據在內存中占據不同長度的存儲區(qū) 2 一種數據類型對應著一個值的范圍 3 一種數據類型對應著一個運算集 2 1 2數據類型 數據類型 1 2 2常量 2 常量 程序運行過程中其值不發(fā)生變化的量 三類常量 數值 字符和字符串 2 2 1數值常量一 整數常量的表示1 計數制的通用表示方法A an 1 bn 1 an 2 bn 2 a1 b1 a0 b0 a 1 b 1 a 2 b 2 a m b m基數 b 所含數碼的個數權 bx 表明數碼所在的位置數碼 0 b 1 整數常量 實數常量 數值常量 二進制數 基數 2權 2x數碼 0 1例如 1010 11 1 23 0 22 1 21 0 20 1 2 1 1 2 2 10 75二進制數權值 1286432168421注 計算機中使用二進制編碼表示數據 且只存在二進制 2 十進制表示基數 10權 10 x數碼 0 9例如 123 45 1 102 2 101 3 100 4 10 1 5 10 2 3 八進制表示基數 8權 8x數碼 0 7例如 023 2 81 3 80 19注 八進制是二進制的短格式計數法 一位對三位 例如 023對應的二進制數為010011注 C語言中八進制數第一個數字必須為0 八進制標志 例如 0213 030 056 01234 十六進制表示基數 16權 16X數碼 0 9 A B C D E F例如 0XBF3C 11 163 15 162 3 161 12 160 48956 注 十六進制是二進制的短格式計數法 一位對四位 例如 0XBF3C對應的二進制數為1011111100111100注 十六進制數前兩個數字必須為0X 十六進制標志 例如 0X213 0X30 0X56 0X12A二 整數常量的幾種表示方式之間的轉換 紅色 連續(xù)除基數 取余數直到商為零淺藍 按權值位展開 黃色 借助二進制數轉換 1 十進制變八進制或十六進制 紅色 1 將139變?yōu)榘诉M制數 0213 8139817余382余10余2將3158變?yōu)槭M制數 0XC56 2 八進制或十六進制變十進制 淺藍 1 將0213變?yōu)槭M制數 139 0213 2 82 1 81 3 80 139 2 將0XC56變?yōu)槭M制數 3158 3 八進制與十六進制變換 黃色 1 將0X1A3變成八進制數 0643 P19 2 將0334變?yōu)槭M制數 0XDC P19 三 整數常量的取值范圍短整型數 基本整型數 長整型數 四 溢出整數的值超出了所能表示的范圍 有符號短整型 16位 32768 32767 無符號短整型 16位 0 65535 有符號整型 16位 32768 32767 無符號整型 16位 0 65535 有符號長整型 32位 2147483648 2147483647 無符號長整型 32位 0 4294967295 五 實數實數只使用十進制形式表示兩種表示方法 小數形式與指數形式1 小數形式 由整數部分 小數點 小數部分組成2 7180 123123 0 123123 0 02 指數形式 整數部分 小數部分 e前部分稱為尾數 表示實數的有效值 符號表示整體的正負 e后部分稱為階碼 表示小數點在尾數基礎上的移動位數 符號表示移動的方向例如 3 14e2 3 14e 2實數的分類 單精度 例如 3 1415f雙精度 例如 3 1415長雙精度 例如 3 1415L 實數取其值的絕對值范圍 當實數超出它的類型所能表示的范圍時產生溢出 如果實數的絕對值小于所能表示的最小值則產生下溢 例如 實數1 7e 309和 1 7e 309均產生下溢 因為 1 7e 309 1 7e 308 上溢時將產生錯誤的結果 實數又分為單精度 float 雙精度 double 和長雙精度 longdouble 三類 實數的缺省類型為雙精度數 double型 在實數后面加后綴字母f或F表示單精度數 float型 例如3 14159F 在實數后面加后綴字母l或L表示長雙精度數 longdouble型 例如1 7e 309L 單精度實數具有6 7位十進制有效數字 雙精度實數具有15 16位十進制有效數字 長雙精度數具有18 19位十進制有效數字 2 2 2字符常量一對單引號括起來的單一字符 例如 A 2 字符常量在內存中占一個字節(jié)存放 存放的值為該字符的ASCII碼值 美國標準信息交換碼ASCII碼 AmericanStandardCodeforInformationInterchange 前32個 0 x0 0 x1f為控制字符 是空格 編碼為OX20 3 編碼為OX33 9 編碼為OX39 A 編碼為OX41 Z 編碼為OX5A a 編碼為OX61 z 編碼為OX7A 2 2 3轉義字符用于表示一些沒法表示的字符 例如控制字符 單引號等兩種表示形式 1 反斜杠后面跟一個字符例如 0 空字符 n 換行 t 橫向跳格 b 退格 r 回車 字符 單引號 雙引號2 反斜杠后面跟一個字符的ASCII碼 兩位十六進制數 xhh或三位八進制數 ddd 例如 換行字符可以表示為 n 012 12 XA 2 2 4字符串常量一對雙引號括起來的零個或多個的字符序列 字符序列中的字符個數稱為字符串的長度 例如 thisisastring n thisisa c program 長度為0的字符串 即一個字符都沒有的字符串 稱為空串 表示為 一對緊連的雙引號 在存儲字符串常量時 由系統(tǒng)在字符串的末尾自動加個空字符 0 作為字符串的結束標志例如 有一個字符串 CHINA 它在內存中的實際存儲如下所示 字符串如果有n個字符 則占用n 1個內存空間 字符串必須寫成一行 如下寫法是錯誤的 printf Hello howareyou 字符串常數必須寫成一行 如果一行寫不下 則有兩種方法可以將行擴展到下一行 printf hello howareyou 兩個字符串中間只有空白字符 分隔符 認為這是一個字符串 2 續(xù)行符printf hello howareyou 2 2 5符號常量將一個常量定義為一個標識符 這個標識符可以代替對應的常量 稱為符號常量 例如 definePI3 1415926 符號常量名使用大寫字母 使用符號常量的優(yōu)點 1 輸入很長的常量可以避免出錯 簡化輸入 2 含義直觀 3 修改容易例如 計算相同半徑下的圓周長 圓面積和圓球體積 definePI3 14159main main floatl s v r floatl s v r printf inputr printf inputr scanf f 2 3變量及數據類型 2 3 1變量和變量的地址變量 程序運行中可以改變的量 本質是內存中的一塊存儲區(qū) 變量名 是這塊存儲區(qū)的首地址的符號標識 通過變量名找到這塊存儲區(qū)在內存中的位置 找到該塊存儲區(qū)內存儲的內容 注 使用變量名表示存儲的數據 使用 變量名表示地址 變量類型 表明這塊存儲區(qū)的大小 以及施加在這塊存儲區(qū)內存儲的內容上的操作范圍 在程序運行時 變量的值存儲在一定的存儲單元中 為此 須弄清楚變量名和變量值這兩個不同的概念 如左圖所示 存儲某變量值的存儲單元的首地址稱為變量的地址 如右圖所示的單精度實型變量average 是具有4個字節(jié)的存儲單元 它們分別是單元4000 4003 而4000就稱為變量average的首地址 在C語言中 變量的地址用變量名前加 符號表示 即 average 或者說 average的值就是4000 變量名floataverage average 4000sum變量值400140024003存儲單元 30 2 3 2基本數據類型變量一 整型變量包括基本整型 短整型和長整型 ANSIC規(guī)定long不短于int short不長于int 具體實現取決于計算機系統(tǒng) 1 整型變量的類型標識符有符號短整型 signed short int 無符號短整型 unsignedshort int 有符號基本整型 signed int無符號基本整型 unsigned int 有符號長整型 signed long int 無符號長整型 unsignedlong int 例如 inta 取值范圍為 32768 32767unsignedintb 取值范圍為0 65535 二 計算機中數的表示無符號數表示00000000 00000000000000000 011111111 2551111111111111111 65535表示有符號數 加正負號 用0和1代表正負 用某種編碼方式使符號位也直接參與運算 不用特殊處理并得到正確結果機器數 符號數值化了的數 最高位為符號位 1表示負號 0表示正號 其余為真值 原碼表示法 符號 絕對值例如 3 原碼 00000011 03H 3 原碼 10000011 83H 0 原碼 00000000 00H 0 原碼 10000000 80H 八位 十六位 補碼表示法 計算機中有符號數用補碼表示正數的補碼 正數的原碼負數的補碼 該負數相對應的正數的補碼按位取反再加一例如 46 補碼 46 補碼 0010111011010001 按位取反 11010010 D2H 加一 n位補碼的表數范圍 2n 1 N 2n 1 1n 8 128 N 127n 16 32768 N 32767 三 實型變量實型變量為 單精度型 雙精度型和長雙精度型 單精度 float 四個字節(jié)存儲 雙精度 double 八個字節(jié)存儲 長雙精度 longdouble 字節(jié)數 8 取決于計算機系統(tǒng) 取值范圍 單精度型 有6 7位有效數字 范圍約為 3 4e 38 3 4e 38 雙精度型 有15 16位有效數字 范圍約為 1 7e 308 1 7e 308 長雙精度型 如TurboC中的長雙精度型變量的值在內存中占10個字節(jié) 四 字符變量用于存放字符常量 存放的是字符的ASCII碼 類型標識符為char 2 3 3變量說明變量遵循先定義 說明 后使用的原則 變量說明的目的 在編譯時便于發(fā)現未經定義的變量名 2 根據類型信息來檢查對變量施加的運算是否合理 3 編譯時根據類型為變量分配固定長度的存儲單元 并確定數據在內存中的表示方法 變量說明形式 存儲類別 存儲類別決定變量的存儲位置 同時也決定變量的生存期和作用域 數據類型用于指明變量名表中所列變量的數據類型 例如 intnumber score unsignedlongdistance 例2 1 不同整型變量的混合運算 main inta b c d x y unsignedinte a 20 b 15 c 50 d 10 e 25 x a b e y c d e printf na b e d c d e d n x y 運行結果為 a b e 30 c d e 65 例2 2 整型數據的溢出問題 main inta x unsignedintb y a 3 b 65532 x a b y a b printf x d y u n x y 運行結果為 x 1 y 6553500000000000000113 a 111111111111110065532 b1111111111111111 例2 3 字符型數據和整型數的混合運算 main charc1 c2 c3 c1 A 3 c2 65 c3 A printf c c c n c1 c2 c3 printf d d d n c1 c2 c3 運行結果如下 D A A68 65 65 2 3 4變量的初始化變量說明只是指定了變量的名字和數據類型 并沒有給它們賦初值 但程序中有些變量在使用前必須賦初值例如 作為計數器 n n 1 使用的整型變量n通常要置初值0在C語言程序中 沒有賦初值的變量并不意味著該變量中就沒有數值 因為該變量所標識的存儲單元中還保留著以前使用該單元時留下的內容 只是尚未對該變量定義特定值 于是 直接引用該變量就會產生莫名其妙的結果 沒有賦值的變量內存單元會有隨機值存在 變量賦初值的一般形式 例如 intn 0 s 1 doubleprice 35 5 intx y 10 z 2 4運算符和表達式 2 4 1概述運算符 C語言中用于描述數據運算的特殊符號 操作數 運算符的運算對象 常量 變量 函數等 表達式 用運算符將C語言的各種運算對象連接起來 組成符合C語言語法要求的式子 一個常量或變量也可稱為表達式 目 對一個運算符而言 參加運算的操作數的個數 單 雙 三 例如 a b sin x 2優(yōu)先級 運算符的優(yōu)先級 規(guī)定表達式中不同運算符相鄰出現時 運算符的計算順序 優(yōu)先級高的運算符先進行計算 結合性 C語言特有的 用來規(guī)定同樣優(yōu)先級的運算符相鄰出現時表達式的計算方式 計算方向 例如 a b c d a b c d i i 注 括號可以用來改變表達式的優(yōu)先級和結合方式 2 4 2算術運算符和算術表達式1 基本算術運算符 加法或正值運算符 減法或負值運算符 乘法運算符 除法運算符 求余數運算符 1 整數除法和實數除法整數除 兩個操作數全是整數 商為整數 小數部分被舍棄 例如 5 2 2 10 3 3實數除 兩個操作數只要有一個是實數 商為實數 例如 3 0 5 0 0 63 5 0 0 6 2 關于求余數運算 兩個操作數必須全為整數 結果為整數 符號與被除數相同例如 53 7 453 7 4 53 7 4 3 混合運算運算符兩側的數據類型可以不同 系統(tǒng)先將兩個運算對象轉換成相同的數據類型 再進行實際計算 這種由混合運算引起的類型轉換是自動進行的 例如 a 2 718 b 10 5 2 a b 設a和b是實型變量 轉換原則 表示范圍小的類型轉換為表示范圍大的類型2 自增 自減運算符 和 功能 將一個變量加1或減1 常用來修改計數次數 下標或指針 i ii i例如 intx a 5 x a x a a a 1x a x a a a 1x a a a 1 x ax a a a 1 x a 1 操作數必須是變量 和 運算符的操作數只能是變量 而不能是常量或表達式 例如 25 是不合法的 i j 是不合法的 2 單目運算符 優(yōu)先級與取負數運算符 相同 結合方向是從右至左 例如 inti 4 printf d i 輸出 4 i最終等于5 相當于printf d i 注意 1 優(yōu)先級和結合性 單目運算符 和 是從右至左結合的 和 是從左至右結合的 2 書寫表達式要使用括號使表述清晰例如 i j寫成 i j 2 4 3賦值運算符和賦值表達式賦值 把表達式的值存入變量所對應的存儲空間1 簡單賦值運算符 格式 變量名 表達式 如果 兩邊的類型不一致 系統(tǒng)會將右邊的數據轉換為左邊變量的類型 截取或擴展 例如 inti j doubled 2 6 charc1 a c2 j c1 c2 102 i d 3 結合性為從右至左 例如 x y 5 x y 5 2 算術復合賦值運算符 3 2 4 4關系運算符和關系表達式關系運算 對兩個操作數進行比較的運算 由關系運算符實現 大于 大于等于 小于 小于等于 等于 不等于 1 優(yōu)先級與結合性 c dx y za x y z例如 intx 2 y 3 求z1和z2的值z1 0 x 9z2 3 1 x 1 y 2 a b c d x y z a x y z z1 0 x 9 z2 3 1 x 1 y 2 2 4 5邏輯運算符和邏輯表達式邏輯運算符用來描述同時滿足 只要滿足其一 相反的條件等關系 邏輯與 邏輯或 邏輯非 1 邏輯運算真值表 2 優(yōu)先級與結合性 算術運算 關系運算 賦值運算 是右結合方向 與 是左結合方向 例如 寫出下列表達式的執(zhí)行順序x y a a c 9 注意 在計算邏輯表達式時 并不是所有的表達式都要被求解 邏輯與 如果第一個操作數被判定為 假 系統(tǒng)不再判定或求解第二操作數 邏輯或 如果第一個操作數被判定為 真 系統(tǒng)不再判定或求解第二操作數 例如 假設n1 n2 n3 n4 x y的值分別為1 2 3 4 1 1 則求解表達式 x n1 n2 y n3 n4 后x和y的值 條件或邏輯表達式用整數 表示結果 邏輯真 用 表示結果 邏輯假 在判斷一個數據的 真 或 假 時 卻以 和非 為根據 如果為 則判定為 邏輯假 如果為非 則判定為 邏輯真 例如 x 10 y 5 z a 求下列表達式的值 xy z x 010 0 3 2 4 6條件運算符 1 格式 表達式1 表達式2 表達式3 2 運算規(guī)則 如果 表達式1 的值為非0 即邏輯真 則運算結果等于 表達式2 的值 否則 運算結果等于 表達式3 的值 3 優(yōu)先級與結合性僅高于賦值運算符 逗號運算符 右結合性 例如 從鍵盤上輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防搶劫報警器項目可行性研究報告
- 2025年液力螺栓預緊器項目可行性研究報告
- 2025年保護帽項目可行性研究報告
- 2025至2030年硝酸鍶項目投資價值分析報告
- 2025至2030年修邊角項目投資價值分析報告
- 二零二五年度鋪面租賃合同范本下載(創(chuàng)新設計版)
- 二零二五年度棉被產品電商平臺用戶滿意度調查合同
- 2025年全球及中國旅行和旅游營銷機構行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國抗菌皮膚清潔劑行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國鋰提取和精煉行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 大學生職業(yè)生涯發(fā)展與規(guī)劃(第二版)PPT完整全套教學課件
- 領導干部的情緒管理教學課件
- 初中英語-Unit2 My dream job(writing)教學課件設計
- 供貨方案及時間計劃安排
- 唐山動物園景觀規(guī)劃設計方案
- 中國版梅尼埃病診斷指南解讀
- 創(chuàng)業(yè)投資管理知到章節(jié)答案智慧樹2023年武漢科技大學
- 暨南大學《經濟學》考博歷年真題詳解(宏觀經濟學部分)
- GB/T 8014.1-2005鋁及鋁合金陽極氧化氧化膜厚度的測量方法第1部分:測量原則
- eNSP簡介及操作課件
- 運動技能學習與控制課件第七章運動技能的協調控制
評論
0/150
提交評論