




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
運算符與表達式 吳清鋒2007年秋 提綱 變量的定義與賦初值運算符與表達式概述算術(shù)運算符與算術(shù)表達式基本算術(shù)運算符自增 自減運算符幾點說明賦值運算符與賦值表達式類型轉(zhuǎn)換逗號運算符和逗號表達式運算符小結(jié) 結(jié)束 變量的定義與賦初值 變量定義的一般形式類型名變量名1 變量名2 變量定義的位置 在所有函數(shù)之外或在塊內(nèi)的開頭部分程序中經(jīng)常要對一些變量預(yù)先設(shè)置初值 C語言允許在定義變量的同時執(zhí)行變量初始化 如 inta 3 inta b c 5 這樣將使得程序更為簡潔 返回 正確的例子 intg main inta a 1 printf a d n a 錯誤的例子1 main inta a 1 printf a d n a 錯誤的例子2 main printf error n inta a 1 printf a d n a 運算符與表達式概述 1 回顧 定義了變量的類型 不但定義了變量所擁有的存儲單位的大小 同時也定義了變量所能參與的運算 這些運算就是通過運算符來實現(xiàn)的 C運算符范圍很寬 除控制語句以外的幾乎所有基本操作都由運算符表示 C語言的一個特點 運算符豐富運算符一般要攜帶若干運算對象 運算對象稱為操作數(shù) 根據(jù)操作數(shù)的個數(shù) 運算符可以分為單目運算符 雙目運算符和三目運算符 常量 變量或函數(shù)調(diào)用 運算符與表達式概述 2 表達式由運算符和相應(yīng)的操作數(shù)及用于描述運算先后次序的括號構(gòu)成 為了表達式的書寫方便 可以少寫一些括號 C引進了運算符優(yōu)先級和結(jié)合方向的概念 在表達式求值時 先按運算符的優(yōu)先級別高低次序執(zhí)行 運算符的結(jié)合方向 結(jié)合性 規(guī)定了同優(yōu)先級運算符相遇時候的運算次序 C運算符有兩種結(jié)合方向 自左向右結(jié)合 左結(jié)合性 即運算對象先與左面的運算符結(jié)合 自右向左結(jié)合 右結(jié)合性 即運算對象先與左面的運算符結(jié)合 返回 運算符與表達式概述 3 在學(xué)習(xí)這部分內(nèi)容的時候 注意 對于運算符要掌握適用對象 優(yōu)先級 通過與其他運算符的比較來體現(xiàn) 和結(jié)合方向 對于表達式 一定要注意拷問下表達式的值 基本算術(shù)運算符 C語言中的基本算術(shù)運算符有6個 減 求模 取負 除了負號運算符是單目運算符外 基本算術(shù)運算符號都是二目運算符 運算符的兩個操作數(shù)均要求為整型或字符型數(shù)據(jù)兩個整數(shù)相除的結(jié)果亦為整數(shù) 相應(yīng)小數(shù)部分將被舍棄 這樣 5 3的結(jié)果為1 但 5 3的結(jié)果是 1或 2將取決于不同的系統(tǒng) 六個基本算術(shù)運算符的優(yōu)先級如下 取負 減 除了負號運算符是 右結(jié)合性 外 基本算術(shù)運算符號都是 左結(jié)合性 的 返回 自增 自減運算符 自增 自減運算符的形式是 和 其作用分別是使其操作數(shù)的值增1或減1 自增 自減運算符只能用于變量 而不能用于常量或表達式 例如 5 a a都是錯的 自增 自減運算符均有前置和后置兩種形式 當(dāng)采用前置形式時 將先對變量執(zhí)行自增 減 操作再取變量值為表達式的值 而采用后置形式時 將先取變量值為表達式的值再對變量執(zhí)行自增 減 操作 例子自增 自減運算符的優(yōu)先級和負號運算符相同 其結(jié)合方向也和負號運算符相同 自右至左 因此表達式 i 將等價于 i 自增 自減運算符常用于循環(huán)語句 指針移動中 原因是 簡潔 高效 返回 幾點說明 1 C標準并沒有具體規(guī)定表達式中的子表達式的求值順序 如 下面代碼在不同C編譯系統(tǒng)中的輸出可能不同 main inti 3 j j i i i printf i d j d n i j 在調(diào)用函數(shù)時 實參的求值順序 C標準也沒有統(tǒng)一的規(guī)定 如 下面代碼在不同C編譯系統(tǒng)中的輸出可能不同 main inti 3 printf d d n i i TC和VC的輸出為i 6 j 9 多數(shù)系統(tǒng)輸出4 3 原因是多數(shù)系統(tǒng)中的參數(shù)傳遞順序是從右到左的 但是VC的輸出是3 3 幾點說明 2 出現(xiàn)可能產(chǎn)生歧義的運算符組合時 C編譯系統(tǒng)在處理時盡可能多地 自左而右 將若干字符組成一個運算符 例 i j i j i i 為了提高程序的可讀性 更明確地表達程序的意圖 應(yīng)該注意如下幾點 適當(dāng)引入括號以取消可能出現(xiàn)的運算符組合歧義避免表達式和函數(shù)調(diào)用的運算結(jié)果對子表達式或函數(shù)參數(shù)求值次序的依賴性 返回 這是一個錯誤的表達式 為什么 賦值運算符與賦值表達式 1 賦值符號 就是賦值運算符 作用是將一個數(shù)據(jù)賦給一個變量 例 注意 如果原來a中有值 賦值后會如何 在賦值符 前加上其它運算符 可以構(gòu)成復(fù)合賦值符 凡是二目運算符 都可以與賦值符一起組合成復(fù)合賦值符 目前常用的有 引進復(fù)合賦值運算符是為了使程序更簡潔 但在閱讀程序時要注意如何 翻譯 賦值運算符的優(yōu)先級比算術(shù)運算符低 賦值運算符與賦值表達式 2 由賦值運算符將一個變量和一個表達式連接起來的式子稱為 賦值表達式 一般形式為 變量賦值運算符表達式賦值表達式的求解過程表達式是要有值的 賦值表達式的值是被賦值的變量的最終值 賦值運算符是 自右而左 結(jié)合的 因而下面兩行等價的 a b 5a b 5 同理 下面兩行也是等價的a a a aa a a a 變量的初始化基本上相當(dāng)于一次賦值 例如 下面兩行是等價的inta 3 inta a 3 若a 12 則a a a a的運算流程如下 首先計算a a a a 得到a 132然后計算a a a a a 得到a 264 返回 類型轉(zhuǎn)換 1 混合運算 數(shù)值類型之間 數(shù)值類型和字符類型之間的數(shù)據(jù)可混合運算 運算時 不同類型數(shù)據(jù)先轉(zhuǎn)換為同類型 再進行運算類型轉(zhuǎn)換符合下圖其中 橫向向左的箭頭表示必定的轉(zhuǎn)換 縱向箭頭表示當(dāng)運算對象為不同類型時轉(zhuǎn)換的方向 類型轉(zhuǎn)換是由系統(tǒng)自動進行的 一個示例 類型轉(zhuǎn)換 2 強制類型轉(zhuǎn)換 強制類型轉(zhuǎn)換符可以將一個表達式轉(zhuǎn)換為所需類型需要注意 在強制類型轉(zhuǎn)換時 得到一個所需類型的中間變量 原來變量的類型未發(fā)生變化強制類型轉(zhuǎn)換表達式的一般形式為 目標類型名 表達式強制類型轉(zhuǎn)換通常用于自動類型轉(zhuǎn)換不能實現(xiàn)目的時 強制類型轉(zhuǎn)換通常也用于保證函數(shù)調(diào)用的實參和形參類型一致 這時并不發(fā)生自動類型轉(zhuǎn)換 強制類型轉(zhuǎn)換符是 自右至左 強制類型轉(zhuǎn)換符的優(yōu)先級很高 高于算術(shù)運算符 因而對整個表達式 比如算術(shù)表達式 進行類型轉(zhuǎn)換時 必須將表達式用括號括起 當(dāng)x y均為float型時 下面兩行是不同的 int x y int x y 當(dāng)f為float型時 要使f 3合法必須使用 int f 3這種形式 類型轉(zhuǎn)換 3 賦值 當(dāng)賦值運算符兩側(cè)的類型不一致但都是字符或數(shù)值型時 賦值時要進行類型轉(zhuǎn)換 int float double 舍棄實數(shù)的小數(shù)部分 float double int 數(shù)值不變 補足有效數(shù)字 以浮點形式存儲 float double 數(shù)值范圍不溢出時截取前7位有效數(shù)字 否則出錯 double float 數(shù)值不變 有效位數(shù)擴展 int unsignedchar 以char的8位為int的低8位 高8位補0 int char 以char的8位為int的低8位 char的符號位擴展為高8位 char int short或long 取其低8位 long int 效果類似int char long unsignedint 效果類似int unsignedchar int long 取其低16位 占用同樣字節(jié)數(shù)的整型相互賦值 效果是原樣拷貝字節(jié)內(nèi)容 返回 逗號運算符和逗號表達式 逗號運算符 又稱 順序求值運算符 用它可以將兩個表達式連接起來 逗號表達式的一般形式為表達式1 表達式2 表達式3逗號表達式的求值過程就是順序求值各個表達式 逗號表達式的值為最后一個表達式的值 注意 前面表達式對某個值的修改 將影響后后面表達式的運算例子 a a 5 a 4逗號運算符的優(yōu)先級是所有運算符中最低的 所以下面兩行是不同的 x a 3 6 3 x a 3 6 3 返回 運算符小結(jié) 返回 示例 混合運算 如果有變量定義為 inti floatf doubled longe 則表達式10 a i f d e中涉及的類型轉(zhuǎn)換可以如圖 返回 C語言運算符的類型 算術(shù)運算符賦值運算符強制類型轉(zhuǎn)換符逗號運算符關(guān)系運算符 邏輯運算符 條件運算符下標運算符函數(shù)調(diào)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州國企招聘2025仁懷市交通運輸服務(wù)有限公司招聘92人筆試參考題庫附帶答案詳解
- 江西豐城市紀委監(jiān)委招聘38名調(diào)查看護人員筆試歷年參考題庫附帶答案詳解
- 天津濱海職業(yè)學(xué)院《程序設(shè)計實訓(xùn)(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安財經(jīng)大學(xué)《功能高分子材料的設(shè)計與開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 隨州職業(yè)技術(shù)學(xué)院《網(wǎng)絡(luò)爬蟲技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 錫林郭勒職業(yè)學(xué)院《新媒體網(wǎng)絡(luò)營銷劃寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京郵電大學(xué)世紀學(xué)院《現(xiàn)代大地測量學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京師范大學(xué)中北學(xué)院《人力資源管理實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 榆林能源科技職業(yè)學(xué)院《護理學(xué)基礎(chǔ)Ⅰ(實驗)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南三一工業(yè)職業(yè)技術(shù)學(xué)院《現(xiàn)代環(huán)境監(jiān)測技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年福建高考化學(xué)試卷(含答案解析)
- 實測實量專項方案
- 安徽彩色壓花地坪施工方案
- 二氧化碳與水反應(yīng)的實驗改進
- 建設(shè)工程施工合同GF-0201
- 吸收塔安裝施工方案
- 辛棄疾詞《青玉案·元夕》
- 年產(chǎn)鄰苯二甲酸二丁酯畢業(yè)設(shè)計
- 液壓傳動連接 試驗方法 第2部分:快換接頭
- 2024年重慶市初中學(xué)業(yè)水平考試生物試卷試題真題(含答案詳解)
- 整形外科診療規(guī)范
評論
0/150
提交評論