




已閱讀5頁,還剩32頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章數據類型 運算符與表達式 3 1C語言的數據類型3 2常量和變量3 3整型數據3 4實型數據3 5字符型數據3 6算術運算與算術表達式3 7賦值運算與賦值表達式3 8C語言特有的運算和運算符 3 1C語言的數據類型 C語言提供的數據結構 是以數據類型形式出現的 具體分類如下 1 基本類型分為整型 實型 又稱浮點型 字符型和枚舉型四種 2 構造類型分為數組類型 結構類型和共用類型三種 3 指針類型 在第9章中介紹 4 空類型C語言中的數據 有常量和變量之分 它們分別屬于上述這些類型 3 2常量和變量 3 2 1常量1 常量的概念在程序運行過程中 其值不能被改變的量稱為常量 2 常量的分類 1 整型常量 2 實型常量 3 字符常量 4 符號常量 definePI3 14main constfloatPI 3 14 floatr area r 2 area PI r r 常量的類型 可通過書寫形式來判別 3 2 2變量1 變量的概念在程序運行過程中 其值可以被改變的量稱為變量 2 變量的兩個要素 1 變量名 每個變量都必須有一個名字 變量名 變量命名遵循標識符命名規則 2 變量值 在程序運行過程中 變量值存儲在內存中 在程序中 通過變量名來引用變量的值 5 a 標識符命名規則 1 有效字符 只能由字母 數字和下劃線組成 且以字母或下劃線開頭 2 有效長度 隨系統而異 但至少前 個字符有效 如果超長 則超長部分被舍棄 例如 由于student name和student number的前 個字符相同 有的系統認為這兩個變量 是一回事而不加區別 在TCV2 0中 變量名 標識符 的有效長度為 個字符 缺省值為 3 C語言的關鍵字不能用作變量名 注意 C語言對英文字母的大小敏感 即同一字母的大小寫 被認為是兩個不同的字符 習慣上 變量名和函數名中的英文字母用小寫 以增加可讀性 思考題 在C語言中 變量名total與變量名TOTAL ToTaL tOtAl等是同一個變量嗎 INT是合法變量嗎 C語言關鍵字C語言的關鍵字共有32個 根據關鍵字的作用 可分其為數據類型關鍵字 控制語句關鍵字 存儲類型關鍵字和其它關鍵字四類 1 數據類型關鍵字 12個 char double enum float int long short signed struct union unsigned void 2 控制語句關鍵字 12個 break case continue default do else for goto if return switch while 3 存儲類型關鍵字 4個 auto extern register static 4 其它關鍵字 4個 const sizeof typedef volatile 標識符命名的良好習慣 見名知意 所謂 見名知意 是指 通過變量名就知道變量值的含義 通常應選擇能表示數據含義的英文單詞 或縮寫 作變量名 或漢語拼音字頭作變量名 例如 name xm 姓名 sex xb 性別 age nl 年齡 salary gz 工資 4 變量的定義與初始化在 語言中 要求對所有用到的變量 必須先定義 后使用 且稱在定義變量的同時進行賦初值的操作為變量初始化 1 變量定義的一般格式 存儲類型 數據類型變量名 變量名2 例如 floatradius length area 2 變量初始化的一般格式 存儲類型 數據類型變量名 初值 變量名2 初值2 例如 floatradius 2 5 length area 3 3整型數據 3 3 1整型變量1 分類根據占用內存字節數的不同 整型變量又分為 類 1 基本整型 類型關鍵字為int 2 短整型 類型關鍵字為short int 3 長整型 類型關鍵字為long int 4 無符號整型 無符號型又分為無符號基本整型 unsigned int 無符號短整型 unsignedshort 和無符號長整型 unsignedlong 三種 只能用來存儲無符號整數 2 占用內存字節數與值域上述各類型整型變量占用的內存字節數 隨系統而異 在16位操作系統中 一般用 字節表示一個int型變量 且long型 字節 int型 字節 short型 字節 不同類型的整型變量 其值域不同 占用內存字節數為n的 有符號 整型變量 其值域為 2n 8 1 2n 8 1 1 無符號整型變量的值域為 0 2n 8 1 例如 PC機中的一個int型變量 其值域為 22 8 1 22 8 1 1 即 32768 32767 一個unsigned型變量的值域為 0 22 8 1 即0 65535 參看P43表3 13 3 2整型常量 三種表示形式整型常量即整常數 在 語言中可用三種形式表示 1 十進制 例如10 36 2 八進制 以數字 開頭 例如012 3 十六進制 以數字 小寫字母x開頭 例如0 x36 分類 1 基本整型 在16位機中 用2字節存儲 其數據范圍與int型變量一樣 2 長整型 在數值后面加 L l 對超出基本整型值域的整型常量 可使用長整型常量表示 其取值范圍可達 例如 123l 315 等 3 無符號整型 在數值后面加 U u 在內存按unsignedint規定方式存儲 類型匹配規則類型匹配規則為 一個整型常量 可以賦給能容納下其值的整型變量 例如 其值在 的整型常量 可以賦給int型變量和longint型變量 其值在 的整型常量 就只能賦給longint型變量 整型數據的溢出main inta b a 32767 b a 1 printf d d a b getch 運行結果為 a b 3 4實型數據 2 4 1實型變量1 分類 1 單精度型 類型關鍵字為float 一般占 字節 位 提供 位有效數字 2 雙精度型 類型關鍵字為double 一般占 個字節 提供15 16位有效數字 3 長雙精度型 類型關鍵字為longdouble 一般占16個字節 提供18 19位有效數字 實型數據在內存中的存放形式P46圖3 7 實型數據的舍入誤差main floata b a 123456 789e5 b a 20 printf f f a b 運行結果為 12345678848 000000 12345678848 000000 3 4 2實型常量 表示形式實型常量即實數 在 語言中又稱浮點數 其值有兩種表達形式 1 十進制形式 例如3 14 9 8 2 指數形式 E e 例如3 0 5等 但注意必須有 規范化的指數形式 指的整數部分只有一位非零數字 實數以指數輸出按此形式 思考題 如e3 2 1e3 5 e3合法嗎 關于類型float型 12 5f F double型 12 5 缺省類型longdouble 12 5L l 3 5字符型數據 3 5 1字符常量1 字符常量的定義用一對單引號括起來的單個字符 稱為字符常量 例如 A 等 2 轉義字符 語言還允許使用一種特殊形式的字符常量 就是以反斜杠 開頭的轉義字符 P48表3 3 101 x41 A 65 注意 如果反斜杠或單引號本身作為字符常量 必須使用轉義字符 例3 1 用轉義字符輸出可打印字符和不可打印字符 代碼文件名 c3 1 C 程序功能 用轉義字符輸出可打印字符和不可打印字符 main printf x4F x4B x21 n 等價于printf OK n printf x15 xAB n getch 程序運行結果如下 例3 5 c3 1 c include stdio h voidmain printf abc tde rf tg n printf h ti b bjk getch 程序演示 3 5 2字符變量字符變量的類型關鍵字為char 也允許定義為unsignedchar 一般占用1字節內存單元 1 變量值的存儲字符變量用來存儲字符常量 將一個字符常量存儲到一個字符變量中 實際上是將該字符的ASCII碼值 無符號整數 存儲到內存單元中 例如 charch1 ch2 定義兩個字符變量 ch1 ch2 ch1 a ch2 b 給字符變量賦值 2 特性字符數據在內存中存儲的是字符的ASCII碼 一個無符號整數 其形式與整數的存儲形式一樣 P50如圖3 8所示 所以 語言允許字符型數據與整型數據之間通用 1 一個字符型數據 既可以字符形式輸出 也可以整數形式輸出 例3 3 字符變量的字符形式輸出和整數形式輸出 代碼文件名 c3 3 c 程序功能 用字符形式和整數形式輸出字符變量 main charch1 ch2 ch1 a ch2 b printf ch1 c ch2 c n ch1 ch2 printf ch1 d ch2 d n ch1 ch2 程序運行結果 ch1 a ch2 bch1 97 ch2 98 程序演示 2 允許對字符數據進行算術運算 此時就是對它們的ASCII碼值進行算術運算 例3 4 字符數據的算術運算 代碼文件名 c3 4 C 程序功能 字符數據的算術運算 main charch1 ch2 ch1 a ch2 B 字母的大小寫轉換 printf ch1 c ch2 c n ch1 32 ch2 32 用字符形式輸出一個大于256的數值 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 程序運行結果 ch1 A ch2 bch1 200 297ch1 200 ch1 256 353ch1 256 a 程序演示 思考題 用字符形式輸出一個大于256的數值 會得到什么結果 3 5 3字符串常量1 字符串常量的概念和字符串長度字符串常量是用一對雙引號括起來的若干字符序列 字符串中字符的個數稱為字符串長度 長度為0的字符串 即一個字符都沒有的字符串 稱為空串 表示為 一對緊連的雙引號 例如 Howdoyoudo Goodmorning 等 都是字符串常量 其長度分別為14和13 空格也是一個字符 如果反斜杠和雙引號作為字符串中的有效字符 則必須使用轉義字符 例如 1 C msdos v6 22 C msdos v6 22 2 Isay Goodbye Isay Goodbye 可用作字符串常量的續行符 例如 ABCDEFIJK ABCDE FIJK 2 字符串的存儲C語言規定 在存儲字符串常量時 由系統在字符串的末尾自動加一個 0 作為字符串的結束標志 注意 在源程序中書寫字符串常量時 不必加結束字符 0 否則畫蛇添足 如果有一個字符串為 CHINA 則它在內存中的實際存儲如下所示 最后一個字符 0 是系統自動加上的 它占用 字節而非 字節內存空間 綜上所述 字符常量 A 與字符串常量 A 是兩回事 1 定界符不同 字符常量使用單引號 而字符串常量使用雙引號 2 長度不同 字符常量的長度固定為1 而字符串常量的長度 可以是0 也可以是某個整數 3 存儲要求不同 字符常量存儲的是字符的ASCII碼值 而字符串常量 除了要存儲有效的字符外 還要存儲一個結束標志 0 思考題 a 20與 a 20合法嗎 3 6算術運算與算術表達式 在 語言中 除控制語句和輸入輸出函數外 其它所有基本操作都作為運算符處理 1 五種基本算術運算符 減法 取負 求余數 1 關于除法運算 C語言規定 兩個整數相除 其商為整數 小數部分被舍棄 例如 5 2 2 2 關于求余數運算 要求兩側的操作數均為整型數據 否則出錯 思考題 負整數求余情況 5 2 5 2 5 2 2 表達式和算術表達式 1 表達式的概念用運算符和括號將運算對象 常量 變量和函數等 連接起來的 符合 語言語法規則的式子 稱為表達式 單個常量 變量或函數 可以看作是表達式的一種特例 將單個常量 變量或函數構成的表達式稱為簡單表達式 其它表達式稱之為復雜表達式 2 算術表達式的概念表達式中的運算符都是算術運算符 例如 3 6 9 x y 2 1等 都是算術表達式 良好的源程序書寫習慣 在表達式中 在雙目運算符的左右兩側各加一個空格 可增強程序的可讀性 請比較表達式 x y 2 1 與 x y 2 1 您認為哪個的可讀性更好一些 3 運算符的優先級與結合性P375附錄II 1 語言規定了運算符的優先級和結合性 所謂結合性是指 當一個操作數兩側的運算符具有相同的優先級時 該操作數是先與左邊的運算符結合 還是先與右邊的運算符結合自左至右的結合方向 稱為左結合性 反之 稱為右結合性 結合性是 語言的獨有概念 除單目運算符 賦值運算符和條件運算符是右結合性外 其它運算符都是左結合性 2 表達式求值1 按運算符的優先級高低次序執行 例如 先乘除后加減 2 如果在一個運算對象 或稱操作數 兩側的運算符的優先級相同 則按 語言規定的結合方向 結合性 進行 例如 算術運算符的結合方向是 自左至右 即 在執行 a b c 時 變量b先與減號結合 執行 a b 然后再執行加c的運算 4 數據類型轉換 1 在 語言中 整型 實型和字符型數據間可以混合運算 因為字符數據與整型數據可以通用 如果一個運算符兩側的操作數的數據類型不同 則系統按 先轉換 后運算 的原則 首先將數據自動轉換成同一類型 然后在同一類型數據間進行運算 轉換規則P54圖3 10所示 1 橫向向左的箭頭 表示必須的轉換 char和short型必須轉換成int型 float型必須轉換成double型 2 縱向向上的箭頭 表示不同類型的轉換方向 例如 int型與double型數據進行混合運算 則先將int型數據轉換成double型 然后在兩個同類型的數據間進行運算 結果為double型 注意 箭頭方向只表示數據類型由低向高轉換 不要理解為int型先轉換成unsigned型 再轉換成long型 最后轉換成double型 例inti floatf doubled longe 10 a i f d e 2 除自動轉換外 語言也允許強制轉換 數據類型強制轉換的一般格式為 要轉換成的數據類型 被轉換的表達式 當被轉換的表達式是一個簡單表達式時 外面的一對圓括號可以缺省 例如 inta 10 double a 等價于 double a 將變量a的值轉換成double型 int x y 將x y的結果轉換成int型 float 5 2 等價于 float 5 2 將5轉換成實型 再除以2 2 5 float 5 2 將5整除2的結果 2 轉換成實型 2 0 注意 強制轉換類型得到的是一個所需類型的中間量 原表達式類型并不發生變化 例如 double a只是將變量a的值轉換成一個double型的中間量 其數據類型并未轉換成double型 3 7賦值運算與賦值表達式 1 賦值運算賦值符號 就是賦值運算符 它的作用是將一個表達式的值賦給一個變量 結合性為 自右而左 賦值運算符的一般形式為 變量 賦值表達式例如 x 5y float 5 2如果表達式值的類型 與被賦值變量的類型不一致 但都是數值型或字符型時 系統自動地將表達式的值轉換成被賦值變量的數據類型 然后再賦值給變量 類型轉換規則 P591 實型賦給整型 舍棄實數的小數部分 2 整型賦給實型 值不變 但以浮點數形式存儲3 double型賦給float型 截取7位有效數字 但需注意數值范圍不能溢出 4 字符型賦給整型 數據放入低8位中 無符號高8位補 0 有符號高8位做符號擴展 補 0 或 1 5 整型賦給字符型 僅傳送低8位 6 int型賦給long型 高位進行符號擴展 7 unsignedint賦給longint 高位補 0 8 非unsigned型賦給長度相等unsigned型 照原樣賦值思考題 假設變量num的數據類型為float 其值為2 5 則執行 num int num 后 num的值等于多少 2 復合賦值運算復合賦值運算符是由賦值運算符之前再加一個雙目運算符構成的 結合性為 自右而左 復合賦值運算的一般格式為 變量雙目運算符 表達式 復合賦值運算符它等價于 變量 變量雙目運算符 表達式 當表達式為簡單表達式時 表達式外的一對圓括號才可缺省 否則可能出錯 例如 x 3 等價于x x 3 y x 6 等價于y y x 6 而不是y y x 6 C語言規定的10種復合賦值運算符如下 復合算術運算符 5個 復合位運算符 5個 思考題 c b a 2如何運算 3 賦值表達式由賦值運算符或復合賦值運算符 將一個變量和一個表達式連接起來的表達式 稱為賦值表達式 1 一般格式變量 復合 賦值運算符表達式 2 賦值表達式的值任何一個表達式都有一個值 賦值表達式也不例外 被賦值變量的值 就是賦值表達式的值 例如 a 5 這個賦值表達式 變量a的值 就是它的值 思考題 a b 10 c 6合法嗎 3 8C語言特有的運算和運算符 2 9 1自增 自減 運算1 作用自增運算使單個變量的值增 自減運算使單個變量的值減 2 用法與運算規則自增 自減運算符都有兩種用法 1 前置運算 運算符放在變量之前 變量 變量先使變量的值增 或減 然后再以變化后的值參與其它運算 即先增減 后運算 2 后置運算 運算符放在變量之后 變量 變量 變量先參與其它運算 然后再使變量的值增 或減 即先運算 后增減 例3 5 自增 自減運
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家政服務相關法律安全衛生常識2
- 公司低檔白酒操作營銷攻略( 20)
- 自動控制理論二教學大綱 (一)
- 施工現場綜合管理考核評分細則
- 廣東省佛山市2024-2025學年下學期七年級英語期末模擬測試卷(一)(無答案)
- 2025年湖南省長沙市九年級全真模擬英語試題(保溫卷)(無答案)
- 2025年Android應屆畢業生“過五關斬六將”怒刷千題讓你面試一路暢通
- 2025年Android事件分發機制及設計思路面試建議-android事件分發機制面試
- 部編版三年級下冊第二單元《陶罐和鐵罐》教案
- 建筑施工特種作業-建筑起重機械安裝拆卸工(塔式起重機)真題庫-6
- 圍欄網片采購安裝投標方案(技術標)
- 2024年中考語文滿分作文6篇(含題目)
- 浙江省2024年高中化學1月學業水平考試試題
- 四星級酒店規劃設計方案
- DL∕T 1362-2014 輸變電工程項目質量管理規程
- 臺球桿頭產品項目運營指導方案
- 家電清洗技術手冊
- 《排列組合的綜合運用》練習試題(含答案)
- 2022-2023學年河南省鄭州市高一下學期期末考試數學試題(解析版)
- 霍尼韋爾空氣凈化器說明書kj550
- 在線網課知慧《流行病學與循證醫學(山盟-山東第一醫科大學)》單元測試考核答案
評論
0/150
提交評論