第三章 運算符與表達式_第1頁
第三章 運算符與表達式_第2頁
第三章 運算符與表達式_第3頁
第三章 運算符與表達式_第4頁
第三章 運算符與表達式_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章運算符與表達式1第一節算術運算符和算術表達式第二節賦值運算符和賦值表達式第三節關系運算符和關系表達式第四節邏輯運算符和邏輯表達式第五節條件運算符和條件表達式第六節逗號運算符和逗號表達式第七節不同類型數據的混合運算2第一節算術運算符和算術表達式基本的算術運算符自增和自減運算符3C語言提供了算術運算符

+(加法運算或正號運算符)-(減法運算或負號運算符)*(乘法運算符)/(除法運算符)%(求余運算符,或稱模運算符)基本的算術運算符算術運算符和算術表達式4說明:兩個整數相除結果為整數,如8/5的結果為1,舍去小數部分。如果參加運算的兩個數中有一個數為實數,則結果是double型。求余運算要求%兩側都是整型數據。算術運算符和算術表達式基本的算術運算符5算術表達式用算術運算符和括號將運算量連接起來的式子稱為算術表達式。運算符有優先級和結合性,在求表達式的值時,要按照優先級的高低依次計算,如果運算符兩側優先級相同,則按規定的結合方向進行。結合性算術運算符和算術表達式6算術運算符和算術表達式優先級-(負號運算符)*/%+-(加減運算符)

我最高!

我最低!7++運算符的作用是使變量的值增1。--運算符的作用是使變量的值減1。常見的用法有:++i,--i在使用i前,先使i的值加(減)1i++,i--在使用i后,先使i的值加(減)1自增和自減運算符自增和自減運算符8例題已知

i=5(1)j=i++;j=?i=?(2)j=++i;j=?i=?56669自增和自減運算符注意:

1、自增和自減運算符只能用于變量,表達式(x+y)++是不合法的。2、自增和自減運算符的結合方向是“自右向左”。

如表達式-i++等價于-(i++)。3、(i++)+(i++)+(i++)結果?4、(++i)+(++i)+(++i)結果?5、printf(“%d,%d”,i,i++)10第二節賦值運算符和賦值表達式賦值運算符賦值表達式賦值運算符的結合性11簡單的賦值運算符復合的賦值運算符=+=-=*=%=/=12賦值運算符簡單的賦值就是把一個表達式的值賦給一個變量。例如:

i=5;i=j+1;簡單的賦值運算符13

i+=2等價于i=i+2a*=b+5等價于a=a*(b+5)x%=3等價于x=x%3賦值運算符在賦值符“=”之前加上其它運算符,可以構成復合的運算符。例如:

C語言采用這種復合運算符,一是為了簡化程序,使程序精煉;二是為了提高編譯效率。14賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。形式:

〈變量〉〈賦值運算符〉〈表達式〉例如:x=3y=x+3對賦值表達式求解的過程是:將賦值運算符右側的表達式的值賦給左側的變量。賦值表達式的值就是被賦值的變量的值。結合性15注意:一般形式的賦值表達式中的“表達式”又可以是一個賦值表達式。如:

a=b=8按照從右到左的結合性等價于

a=(b=8)賦值表達式也可以包含復合的賦值運算符。設a的值為6,計算a+=a-=a*a

先進行a*a的計算,結果為36再進行a-=36的計算,相當于a=a-36=-30

最后進行a+=-30的計算,相當于a=a-30=-6016第三節關系運算符和關系表達式關系運算符

優先級<<=>>===!=高低17關系表達式概念用關系運算符將兩個表達式(可以是算術表達式、關系表達式、賦值表達式或邏輯表達式)連接起來的式子,稱為關系表達式。關系表達式的值為邏輯值“真”或“假”,以1代表“真”,以0代表“假”。結合性:左結合性18例如:關系表達式“8==4”的值為“假”,表達式的值為0。關系表達式“5>0”的值為“真”,表達式的值為1。若a=5,b=3,c=1,則a>b>c的計算過程是:

先計算a>b,結果為真,值為1再計算1>c,結果為假,值為0

f=b>c!=a的計算過程是:先計算b>c,結果為1再計算1!=c,結果為0最后將0賦值給f19第四節邏輯運算符和邏輯表達式邏輯運算符!(邏輯非)&&(邏輯與)||(邏輯或)a b !a !b a&&ba||b真 真 假 假 真真真 假 假 真 假真假 真 真 假 假真

假 假 真 真 假假20賦值運算符||&&運算符的優先級關系運算符算術運算符高低!(非)21邏輯表達式邏輯表達式的值是一個邏輯量“真”或“假”。C語言編譯系統在給出邏輯結果時,以數值1代表“真”,以0代表“假”;但是在判斷一個量是否為“真”時,以非0代表“真”,以0代表“假”。例如:

若x=10,則!x的值為0。

若a=3,b=2,則a&&b的值為1。

5&&0||8的值為1。結合性:左結合性。22邏輯運算符的特點特點在邏輯表達式的求解中并不是所有的運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行下一個運算符。例如:1、a&&b&&c2、a||b||c當a=5,b=3,c=2,d=1,x=1,y=1則表達式(x=a<b)&&(y=c<d)首先計算“a<b”,結果為0,則x=0,因此“y=c<d”不被執行,所以y的值仍為1而不是0。23第五節條件運算符和條件表達式條件運算符

?:條件表達式的形式為:

表達式1?表達式2:表達式3這就是條件表達式,先計算表達式1,若其值為非零,則結果為表達式2的值,否則就是表達式3的值。結合性:從右到左24例如:設a=2,b=3,c=4,則(1)m=a>b?a:b的值為3(2)m=a>b?a:b>c?b:c

先計算b>c?b:c,結果為4再計算m=a>b?a:4,結果為4則m的值為4,整個表達式的值也為4。

25第六節

逗號運算符和逗號表達式在逗號表達式中,逗號是一種運算符。形式如下

表達式1,表達式2由逗號隔開的一對表達式從左向右進行計算,其求解過程為:先求解表達式1,再求表達式2,整個逗號表達式的值是表達式2的值。逗號運算符是所有運算符中級別最低的。26例如

a=4*6,a+5

整個逗號表達式的值為29。注意一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式,例如:

(a=4*6,a+5),a+6

整個表達式的值為30。27第七節

不同類型數據的混合運算C語言允許數據值從一種類型轉換成另一種類型。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算。轉換的規則按圖所示。高

doublefloatlongunsigned低int

char,short28說明橫向向左的箭頭表示當運算對象為不同類橫向向左的箭頭表示必定的轉換,如字符型(char)數據和短整型(short)數據必定先轉換成整型(int),以提高運算精度。縱向的箭頭表示當運算對象為不同類型時轉換的方向型時轉換的方向。數據總是由低級別向高級別轉換。29C語言提供一種“強制類型轉換”運算符,將一個類型的變量強制轉換為另一種類型。一般形式為:

(類型標識符)表達式例如:

k=(int)((int)x+(float)i)/*得到整型數*/(float)(x=85)/*得實型單精度數*/注意對一個變量進行強制轉換后,得到一個新的類型的數據,但原來變量的類型不變。30例如若x原為實型變量且值為2.6,在執行

i=(int)x

后得到一個整數2,并把它賦給整型變量i,但x仍為實型,值為2.6。31字符輸出函數格式:putchar(c)功能:將c值所對應的字符輸出到標準輸出設備上(一般為顯示器)。c可以是整型或字符型。一次只能輸出一個字符,也可以輸出控制符,如

putchar('\n')輸出一個換行符,即光標移到下一行。函數調用語句:32例:#include"stdio.h"main(){charch1,ch2;ch1=‘A’;ch2=‘B’;putchar(ch1);putchar(ch2);

}運行程序,運行結果為ABputchar()函數也可以輸出轉義字符,如:putchar(‘\101’)即輸出字符‘A’33格式輸出函數格式:printf(格式控制,輸出表列)功能:printf函數可以將任意類型的多個數據輸出到標準輸出設備上(一般為顯示器)。函數調用語句:34普通字符格式說明轉義字符格式控制由雙引號括起來的字符串由“%”和格式字符組成,它的作用是將輸出的數據按照指定的格式輸出。需要原樣輸出的字符。用于控制輸出。35附加格式說明符格式字符

含義

字母l 用于長整型,可加在格式符d,o,x,u之前

m(整數)數據最小寬度

.n(整數)對實數,表示輸出n位小數;對字符串,表示截取的字符個數

— 輸出的數字或字符在域內向左靠printf格式符格式字符

含義

d 十進制形式輸出帶符號整數(正數輸出不帶符號)

o 八進制形式輸出無符號整數(不輸出前導0)

x 十六進制形式輸出無符號整數(不輸出前導0x)

u 十進制形式輸出無符號整數

c 輸出一個字符

s 輸出一個字符串

f 小數形式輸出單、雙精度實數(隱含輸出6位小數)

e 指數形式輸出單、雙精度實數(數字部分有6位小數)

g 當指數小于-4或大于給定的精度時用%e格式,否則用%f格式。36main(){inta,b;floatx;charc;a=123;b=-1;x=3.14;c='A';

printf("%d,%4d\n",a,a);printf("%d,%x,%o,%u\n",b,b,b,b);printf("%c,%d\n",c,c);printf("%f,%6.1f\n",x,x);}寫出程序運行結果371111111111111111-1在內存中的存放(補碼形式)123,123-1,ffff,177777,65535A,653.140000,3.1運行結果38字符輸入函數格式:getchar()、getch()或getche()功能:從標準設備(一般是鍵盤)輸入一個字符。字符輸入函數沒有參數,函數值就是從設備輸入的字符。函數調用語句:39三個函數有一些差別:getchar()函數在由鍵盤鍵入一個字符后,必須按回車鍵,而getch()和getche()函數不需要。getche()函數和getchar()會顯示出所輸入的字符,而getch()函數不響應輸入的字符。40main(){printf(“Enteracharactertoexit…\n”);getch();}運行結果:Enteracharactertoexit...(注:輸入字符’a’不顯示)比較getchar()和getch()函數:main(){printf(“Enteracharactertoexit…\n”);getchar();}運行結果:Enteracharactertoexit...(注:輸入字符’a’顯示)a(回車)41例4.3從鍵盤輸入三個大寫字母,將其轉換成小寫字母輸出。#include"stdio.h"main(){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();c1=c1+32;c2=c2+32;c3=c3+32;putchar(c1);putchar(c2);putchar(c3);

}運行程序,輸入數據CPUCPU運行結果為cpu42#include"stdio.h"main(){intc1,c2;charc;printf("Pleaseenteracharacter:\n");c=getchar();c1=c-1;c2=c+1;

putchar(c1);putchar(c);putchar(c2);}例4.8給出一個大寫字母,要求按字母順序打印出3個字母,指定的字母是三個字母中間的一個字母。輸入的字母不能為A或Z。43格式輸入函數格式:scanf(格式控制,地址表列)功能:scanf函數可以從標準輸入設備輸入任意類型的多個數據(一般為顯示器)。注意:輸入數不能規定精度格式控制與printf函數中的含義相同。函數調用語句:44scanf格式符格式字符

含義

d 用來輸入十進制整數

o 用來輸入八進制整數

x 用來輸入十六進制整數

c 輸入一個字符

s 輸入一個字符串,以‘\0’為結束標志

f

用來輸入實數,可以用小數形式或指數形式

e 與f作用相同(e和f輸入時不能規定精度)附加格式說明符格式字符

含義

字母l

用于輸入長整型或double型,可加在格式符d,o,x,e,f之前

字母h

用于輸入短整型,可加在格式符d,o,x之前

m(整數)指定輸入數據所占寬度

* 跳過本項輸入,讀入后不送給相應變量

45當輸入一串數據時,系統如何區分每個數據呢?(1)根據格式字符的含義分隔字符。

sacnf("%d%c%f",&a,&b,&c);若輸入數據:120a45.6則a=120,b='a',c=45.6(2)系統按格式串指定的長度截取所需的數據。

scanf("%3d%2d",&a,&b);輸入數據12345則a=123,b=4546(3)用隱含的分隔符。在輸入數據中用空格或換行符分隔數據。

scanf("%d%d%d",&a,&b,&c);輸入數據345或輸入34(回車)5(回車)則a=3,b=4,c=5(4)%后的“*”附加說明符,用來表示跳過它相應的數據。

scanf("%d,%*d,%d",&a,&b);如果輸入3,4,5則a=3,b=5,第二個數據跳過不賦給任何變量。47(5)使用顯示分隔符。在格式說明符中還可以有其它字符,在輸入字符時應輸入與這些字符相同的字符。

scanf("%d,%d,%d",&a,&b,&c);輸入數據3,4,5

scanf(”a=%d,b=%d,c=%d",&a,&b,&c);輸入數據

a=3,b=4,c=5(6)用“%c”格式輸入字符時,空格字符和轉義字符都作為有效字符輸入:scanf("%c%c%c",&c1,&c2,&c3);如果輸入abc則字符‘a’送給c1,空格送給c2,字符’b’送給c348注意:(1)輸入時不能規定精度,如

scanf(“%6.1f”,&a)是

溫馨提示

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

評論

0/150

提交評論