程序設(shè)計基礎(chǔ)(運算符和表達式).ppt_第1頁
程序設(shè)計基礎(chǔ)(運算符和表達式).ppt_第2頁
程序設(shè)計基礎(chǔ)(運算符和表達式).ppt_第3頁
程序設(shè)計基礎(chǔ)(運算符和表達式).ppt_第4頁
程序設(shè)計基礎(chǔ)(運算符和表達式).ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

計算機及程序設(shè)計概述 運算符與表達式 2 運算符 C語言用于描述對數(shù)據(jù)進行運算的特殊符號 語言具有豐富而繁多的運算符由運算符構(gòu)成了各種表達式分類 語言的運算符按其在表達式中與運算對象的關(guān)系單目運算一個運算符連接一個運算對象雙目運算一個運算符連接兩個運算對象三目運算一個運算符連接三個運算對象 3 運算符 分類算術(shù) 自增 自減 運算符 關(guān)系運算符 賦值運算符 條件運算符 逗號運算符 指針運算符 強制類型轉(zhuǎn)換運算符 type 分量運算符 和 下標運算符 函數(shù)調(diào)用運算符 4 運算符 對運算符的掌握應從三個方面著手和操作符相關(guān)的數(shù)據(jù)類型 包括操作數(shù)和操作結(jié)果的數(shù)據(jù)類型 運算符的優(yōu)先級運算符的結(jié)合次序 5 表達式 用運算符將運算對象連接而成的符合 語言規(guī)則的算式特別地 一個常量 一個變量 一個函數(shù)都可以看成是一個表達式表達式的分類按照運算符與運算對象的關(guān)系單目表達式雙目表達式三目表達式 6 表達式 表達式的分類按照運算符在表達式中的作用算術(shù)表達式 例 3 4 5賦值表達式 例 a 3關(guān)系表達式 例 5b邏輯表達式 例 3 5 a b條件表達式 例 a b a b逗號表達式 例 a 3 b 4 c 5指針表達式 例 p 2 a 7 表達式的求值過程 C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性優(yōu)先級指同一個表達式中不同運算符進行計算時的先后次序結(jié)合性結(jié)合性是指同一個表達式中相同優(yōu)先級的多個運算應遵循的運算順序 語言規(guī)定 單目運算符是自右向左結(jié)合 雙目運算符是自左向右結(jié)合 8 表達式的求值過程 表達式的求值過程按C規(guī)定的原則求值表達式代表了一個具體的值實際上是一個數(shù)據(jù)加工的過程在表達式求值時 先按運算符的優(yōu)先級級別的高低次序執(zhí)行如果運算符兩側(cè)的優(yōu)先級級別相同 則按規(guī)定的 結(jié)合方向 處理提示運算符的優(yōu)先級制約著表達式的計算次序可以通過括號 來改變表達式求值的順序表達式求值過程中存在某種類型數(shù)據(jù)的類型轉(zhuǎn)換 9 算術(shù)表達式 由算術(shù)運算符連接數(shù)值型運算對象構(gòu)成其結(jié)果可以是整數(shù) 單精度實數(shù)和雙精度實數(shù)例 inta 2 floatb 4 5 表達式2 a b的結(jié)果為8 5優(yōu)先給與結(jié)合性提示兩個整數(shù)相除其結(jié)果仍為整數(shù) 即舍去小數(shù)部分 例如 13 10的結(jié)果為1 為求余運算符 參與運算的兩個數(shù)均為整數(shù)例如 10 3 1 10 3 1除以0在計算機系統(tǒng)中是沒有意義的用括號可以改變表達式的運算順序 10 算術(shù)表達式 算術(shù)表達式例1 設(shè)intb 7 floata 2 5 c 4 7 表達式a int b 3 int a c 2 4的值 例2 11 自增 自減 與 的作用是使變量的值增1或減1C語言提供兩種形式的 運算符 a a 前綴運算 先進行增量運算后使用 a a 后綴運算 先使用后進行增量運算 提示 增和自減只能作用于變量 不允許對常量 表達式或其它進行操作當自增 自減變量值本身就單獨構(gòu)成一條語句時 前綴和后綴的效果是一樣的對于 和 的使用要避免二義性 12 自增 自減 計算過程例1 設(shè)x 5y x 先計算x x 1 再執(zhí)行y x 結(jié)果x 5 y 6 y x 先執(zhí)行y x 再計算x x 1 結(jié)果y 5 x 6 問題 如何理解A B C規(guī)定 自左向右取盡可能多的符號組成運算符 13 自增 自減 例2 設(shè)x 5y x x 先取x的值進行 運算 再進行兩次x y 25 x 7 y x x 先進行兩次x自增 使x的值為7 再進行相乘運算 y 49 x 7 14 賦值表達式 由賦值運算符 連接表達式 右側(cè) 和變量 左側(cè) 形式 變量名 表達式賦值運算符完成兩類操作計算賦值例inta 2 floatb 5 2 c c a b 賦值運算符具有右結(jié)合性例如 a b 3 5 先計算3 5 后將15賦給b 再將b的值15賦給a 15 賦值表達式 組合賦值表達式組合賦值運算符將一個變量和一個表達式連接起來的式子稱為組合賦值表達式形式 變量名表達式例 x y 3 x x y 3 a b c a a b c 注意 a b c 與 a a b c 是不等價的提示 不是數(shù)學中的 等號 它表示一個動作 右側(cè)的值送與左側(cè)的變量中 左側(cè)只允許是變量 不能是表達式或其他 賦值運算符兩側(cè)的類型要求一致 否則要進行類型轉(zhuǎn)換賦值運算符 相等運算符 和一般習慣有所不同 16 關(guān)系表達式 關(guān)系運算符中的 關(guān)系 二字的含義是指一個值與另一個值之間的關(guān)系關(guān)系由關(guān)系運算符 OP表達式可以是常量 變量和表達式結(jié)果為整型值0 邏輯假1 邏輯真優(yōu)先級 高于 結(jié)合方向 自左向右 17 關(guān)系表達式 例 inta 2 floatb 3 4 a b a b b a b b的結(jié)果分別是多少 0 1 0 提示進行關(guān)系運算時 先計算表達式的值 然后再進行關(guān)系比較運算例如 inta 1 b 2 c 3 1 a b 3 c的結(jié)果為0 3 9關(guān)系不成立 2 a b b 11 c 結(jié)果值為1 3 4關(guān)系成立 18 關(guān)系表達式 在表達式中連續(xù)使用關(guān)系運算符時 要注意正確表達含義例如 設(shè) 的取值范圍為 10 10 時 不能寫成 10 x 10 應寫成 10 x x 10 為什么 19 邏輯表達式 邏輯 是指連接關(guān)系的方式由邏輯運算符 連接的表達式構(gòu)成形式 OP表達式可以是常量 變量 或其他表達式其結(jié)果為整數(shù)值0 邏輯假 或1 邏輯真 優(yōu)先級 最高 次之 最低邏輯運算優(yōu)先級低于所有關(guān)系運算 優(yōu)先級高于所有算術(shù)運算 單目運算 結(jié)合性 自左向右例如 a b b d 自右向左 例如 a 20 邏輯表達式 邏輯運算規(guī)則提示設(shè)計邏輯 與 運算 將最可能為 假 的表達式放在最左側(cè)設(shè)計邏輯 或 運算 將最可能為 真 的表達式放在最左側(cè) 21 邏輯表達式 例題 設(shè)inta 3 b 1 x 2 y 0 則 y b y a 的運算結(jié)果為1 問題 1 y b y a的運算結(jié)果是多少 2 兩個表達式在運算次序是否一致 22 條件表達式 由條件運算符連接它的三個運算對象構(gòu)成的表達式稱之為條件表達式形式 條件運算符的 個 總是成對出現(xiàn)表達式可以是任何類型 結(jié)果也可以是任何類型運算過程計算表達式1的值為真 計算表達式2的值 并將表達式2的值作為整個條件表達式的結(jié)果 不再計算表達式3的值為假 計算表達式3的值 并將表達式3的值作為整個條件表達式的結(jié)果 不計算表達式2的值 23 條件表達式 優(yōu)先級高于賦值運算 但低于所有關(guān)系運算 邏輯運算和算術(shù)運算結(jié)合性自右向左結(jié)合提示當多個條件表達式嵌套使用時 每個后續(xù)的 總與前面最近的 沒有配對的 相聯(lián)系例如 x y x z w z w等同于x y x z w z w 三個運算對象的類型可以不相同例如 x a 0 5 24 條件表達式 例題 設(shè)intx 10 y 9 inta b c a x y x y b x c y 執(zhí)行上述程序段后a b c的結(jié)果是 分別為8 8 10 25 逗號表達式 由逗號連接符 與表達式構(gòu)成形式 可以是任何類型逗號表達式的結(jié)果為最后一個表達式的結(jié)果值執(zhí)行過程先求解表達式1的值 再求解表達式2的值 最后求解表達式n的值 并將表達式n的值作為整個表達式的結(jié)果值 26 逗號表達式 優(yōu)先級級別最低 最后進行逗號運算 結(jié)合方向自左向右例題設(shè)intx a 表達式x a 4 6 2 的x值 表達式x a 4 6 2的x值 x為12 x為4 27 運算符與表達式 混合運算指在一個表達式中參與運算的對象不是相同的數(shù)據(jù)類型例如 設(shè) inta 3 floatb 3 0 charc 3 則表達式 a c b 4 int b 2的結(jié)果 進行混合運算的首要的問題是對參與運算的數(shù)據(jù)進行類型轉(zhuǎn)換類型轉(zhuǎn)換由一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換被稱為類型轉(zhuǎn)換 28 隱式的 自動類型轉(zhuǎn)換 如果同一個表達式中含有不同類型的常量和變量 C語言則在計算該表達式時會自動轉(zhuǎn)換為同一種數(shù)據(jù)類型以便進行運算轉(zhuǎn)換原則運算中將所有char型數(shù)據(jù)轉(zhuǎn)換成int型 float型轉(zhuǎn)換成double型 類型提升 低類型向高類型轉(zhuǎn)換例如 1 5 2 a 1 2345678 運算次序為 2 a 先將 a 轉(zhuǎn)換成整型數(shù)97 得乘積1941 5 194 1 5和194都轉(zhuǎn)換成double型 和為95 5195 5 1 2345678 1 2345678本身應是double型的 所以最后結(jié)果也為double型 29 int char short unsigned long double float 低 高 類型提升 示意圖 隱式的 自動類型轉(zhuǎn)換 30 隱式的 自動類型轉(zhuǎn)換 在數(shù)據(jù)輸出時發(fā)生的類型轉(zhuǎn)換同樣要遵守 類型提升 的原則賦值運算中最終結(jié)果的類型 以賦值運算符左邊變量的類型為準要將賦值符號右邊表達式的值按左邊變量的數(shù)據(jù)類型轉(zhuǎn)換之后再賦值當左邊變量的類型長度較右邊值的長度短時 就可能產(chǎn)生誤差 甚至完全錯誤提示由 語言的編譯系統(tǒng)自動完成不會體現(xiàn)在 語言源程序中程序設(shè)計人員必須了解這種自動轉(zhuǎn)換的規(guī)則及其結(jié)果 31 顯式的 類型轉(zhuǎn)換 顯式的 類型轉(zhuǎn)換通過用強制類型轉(zhuǎn)換運算符 type 進行數(shù)據(jù)類型轉(zhuǎn)換其含義是將右邊表達式的值轉(zhuǎn)換成括號中指定的數(shù)據(jù)類型轉(zhuǎn)換形式如下 type 表達式type表示一個強制數(shù)據(jù)類型名表達式是任何一種類型的表達式例 int x y 注意與 int x y不同 32 簡單表達式的運算 例1 執(zhí)行下面程序段后 inta 1 b 1 c 1 a a b c printf d d d a b c 輸出結(jié)果為 A 4 3 2 B 3 3 2 C 3 3 3 D 3 2 2 例2 若定義x y為double型 則表達式x 1 y x 3 2的值是 2 0 例3 若變量已經(jīng)定義并賦值 下面符合C語言語法的表達式是 A a b 1B a b c 2C int18 5 3D a a 7 c b 例4 若a為int類型 且值為3 則執(zhí)行完表達式a a a a后 a的值是多少 A 3B 9C 12D 6 例5 分析下列運算的結(jié)果 defineprintt x y z printf x d y d z d n x y z main intx y z x y z 2 x y 定義宏替換 輸出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論