C++ C語言 簡單的算術(shù)運算和表達式(教學)_第1頁
C++ C語言 簡單的算術(shù)運算和表達式(教學)_第2頁
C++ C語言 簡單的算術(shù)運算和表達式(教學)_第3頁
C++ C語言 簡單的算術(shù)運算和表達式(教學)_第4頁
C++ C語言 簡單的算術(shù)運算和表達式(教學)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 簡單算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式 C語言提供了23種運算符,在這章內(nèi)只介紹算術(shù)運算符和增1、減1運算符及強制類型轉(zhuǎn)換運算符,其余的將在以后的授課中逐一介紹。3.1 C運算符和表達式3.2 宏常量與宏替換3.3 const 常量3.4 自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換3.5 常用標準數(shù)學函數(shù)3.6 小結(jié)3.1 C運算符和表達式3.1.1 基本的算術(shù)運算符和表達式1、基本的算術(shù)運算符+ 、 加號運算符、 減號運算符、 乘號運算符、 除號運算符、 模運算符,或叫作求余運算符 說 明 如果參加、運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果是doubledouble型,因為所有實數(shù)都 按dou

2、bledouble型進行運算。、模運算符,或叫作求余運算符。注意:% % 運算要求運算符兩的運算對象均為整型運算要求運算符兩的運算對象均為整型2 2、算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性、算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性 所謂算術(shù)表達式即:用算術(shù)運算符和括號將用算術(shù)運算符和括號將運算對象連接起來、符合運算對象連接起來、符合C C語法規(guī)則的式子。語法規(guī)則的式子。其中運算包括常量、變量、函數(shù)等。優(yōu)先級結(jié)合性 有關(guān)結(jié)合性的問題將會在以后進行詳細的說明。參見附錄C C運算符的優(yōu)先級與結(jié)合性3.1.2 復合運算符 設變量a都被定義為整型變量,并給變量a賦了初值10。這句話要用程序表示如下左圖所示。若要想

3、將變量a的值加20,其表達式的寫有兩種:使用一般形式(如下中圖所示);使用復合運算符方式(如下右圖所示)int a, b;a = 10;或:int a = 10, b;a = a + 20a += 20這兩個表達式作用相同,其他算術(shù)運算符的復合用法依次類推3.1.3 3.1.3 自增、自減運算符自增、自減運算符 所謂增、自減的作用是使變量的值增1或減1。i +, i - 在調(diào)用i之后,再使i的值加或減1+ i , - i 在調(diào)用i之前,先使i的值加或減1。 粗略地看,i+和+i 的作用均相當于i = i + 1,但+i和i+不同之處在于: int main(void) int i = 3;pr

4、intf(“first i= %d”, + i);printf(“second i= %d”, i+);printf(“third i= %d”, i);return 0;編輯、編譯、鏈接此程序,并運行它,從輸出結(jié)果分析和理解+i和i+的區(qū)別。有關(guān)自增、自減的說明有關(guān)自增、自減的說明 自增運算符和自減運算符 只能用于只能用于變量變量。 + 和-的結(jié)合方向是“自右至左自右至左”。有關(guān)自增、自減的補充 1int main(void)int x,i=3; x=(i+)+(i+)+(i+); printf(x=%d i=%d,x,i);結(jié)果為:結(jié)果為:x=9 i=6x=9 i=6int main(vo

5、id)int x,i=3; x=(+i)+(+i)+(+i); printf(x=%d i=%d,x,i);結(jié)果為:結(jié)果為:x=18 i=6 以上為自增在賦值表達式中的運算結(jié)果,要注意 左面由于是后+,先提取i的原值相加,即3+3+3得9。而右面是先+,故先得i為6,再6+6+6得18 i為6的時刻,左面i是在做完賦值后變?yōu)?的,而右面i是在賦值前已變?yōu)?了。有關(guān)自增、自減的補充 2main()int i=3; printf(%d,(i+)+(i+)+(i+); 結(jié)果為:12main()int i=3; printf(%d,(+i)+(+i)+(+i); 結(jié)果為:15 以上為自增在函數(shù)參數(shù)中的

6、運算結(jié)果。以上兩程序都在第一個printf后再一句printf(“i=%d”,i);則顯示i=?3.2 宏常量與宏替換 另外可用一個標識符代表一個常量,其定義方式如下: 以后在程序中凡遇到PRICE都代表30。 PRICE就稱為符號常量(宏常量)。在程序中將PRICE替換成30的這個動作叫“宏替換”。3.3 const 3.3 const 常量常量 使用宏常量的最大問題是,宏常量沒有數(shù)據(jù)類型。編譯器對宏常量不進行類型檢查,只進行簡單的字符替換,字符替換時極易產(chǎn)生意想不到的錯誤。 那么可否聲明具有某種數(shù)據(jù)類型的常量呢?在這里將介紹const常量。 在聲明語句中,只要將const類型修飾置于類型說

7、明之前,就可將類型說明后的標識符聲明為具有該類型的const常量了。 由于編譯器將其放在只讀存儲區(qū),不允許在程序中改變其值,因此const常量只能在定義時賦值。例如: const double PAI = 3.1415926; 聲明了名為PAI的實型const常量,其值為3.1415926。 具體理解參見教材P34 高 double float long 低 int char, short 圖中橫向向左的箭頭表示橫向向左的箭頭表示必定的轉(zhuǎn)換必定的轉(zhuǎn)換,如字符數(shù)據(jù)必定先轉(zhuǎn)換為整數(shù),float型數(shù)據(jù)在運算時一律先轉(zhuǎn)換成雙精度型,以提高運算精度。 即使是兩個floatfloat型數(shù)據(jù)相加,也先都化為

8、doubledouble型,然后再相加。的箭頭表示當前運算對象為不同類型時轉(zhuǎn)換的方向的箭頭表示當前運算對象為不同類型時轉(zhuǎn)換的方向。例intint 型與doubledouble型數(shù)據(jù)進行運算,先將intint 型的數(shù)據(jù)轉(zhuǎn)換成doubledouble,然后再進行運算。3.4 自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換類型轉(zhuǎn)換類型轉(zhuǎn)換 如果賦值運算符兩側(cè)的類型不一致,但都是數(shù)值或字符型時,在賦值時要進行類型轉(zhuǎn)換。 實型數(shù)據(jù)賦給整型變量 整型數(shù)據(jù)賦給單、雙精度變量 double型數(shù)據(jù)賦給float變量 字符型數(shù)據(jù)賦給整型變量 int、long型數(shù)據(jù)賦給一個char變量注意:這里指的是系統(tǒng)自動

9、進行轉(zhuǎn)換(需解釋)。強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符 可以利用強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型。例如: (double)a(double)a (將a轉(zhuǎn)換成double類型) (int)(x+y)(int)(x+y) (將x+y的值轉(zhuǎn)換成整型) (float)(5%4)(float)(5%4) (將54的值轉(zhuǎn)換成float型)其一般形式為:(類型名)(表達式)(類型名)(表達式)表達式應該用括號括起來。如果寫成(int)x+y(int)x+y 則只將x x轉(zhuǎn)換成整型,然后與y y相加。說說 明明 在強制類型轉(zhuǎn)換時,得到一個所需要類型的中間變量,原來的變量的類型未

10、發(fā)生變化。如: (int) x(int) x (不要寫成int(x)int(x)如果x x原指定為floatfloat型,進行強制類型運算后得到一個intint型的中間變量,它的值等于x x的整數(shù)部分,而x x類型不變(仍為floatfloat型)。例 強制類型轉(zhuǎn)換 int main(main(void) ) float x; x; int i; i; x = 3.14;x = 3.14; i = (i = (int)x;)x;printf(printf(“x=%f,i=%dx=%f,i=%d”,x,i);,x,i);return 0; 0; 運行結(jié)果:運行結(jié)果:x=3.149000 i=3x

11、=3.149000 i=3X類型仍為float,值仍為3.14#include /標準輸入輸出頭文件#include /標準數(shù)學函數(shù)頭文件int main(void)double a, b, c, s, area;a = 3;b = 4;c = 5;s = (a + b + c) / 2; /能否寫成1/2* (a + b + c) area = sqrt(s * (s - a) * (s - b) * (s - c);printf(area = %fn, area);return 0; 3.5 常用標準數(shù)學函數(shù)參見教材P38注意:當在程序中使用標準的數(shù)學函數(shù)據(jù)時,程序中要掛上數(shù)學庫的頭文件。

12、如下所示:逗號運算符和逗號表達式 C語言提供一種特殊的運算符。用它將兩個表達式連接起來。如:3+6,7+8。這種表達式叫作,其一般形式為: 表達式表達式1 1,表達式,表達式2 2 的求解過程是:先求解表達式表達式1 1,再求解表達式表達式2 2。例如:“5 56 6,7 79 9”的值為1616。 從附錄C中查出,而結(jié)合方向是“”(左結(jié)合)。那么如果有下面的表達式: a=5a=5* *6,a+8 6,a+8 應理解為由 a=5a=5* *6 6和a+8a+8 兩個表達式構(gòu)成了一個逗號表達式。若a a的初值為4 4,上述逗號表達式的運算過程是: 先求解a=5a=5* *6 6 得a a值為3030(表達式1的值)。 再求解a+8a+8 得30308 8為為3838

溫馨提示

  • 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

提交評論