C語言的基本運算符和表達式_第1頁
C語言的基本運算符和表達式_第2頁
C語言的基本運算符和表達式_第3頁
C語言的基本運算符和表達式_第4頁
C語言的基本運算符和表達式_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——C語言的基本運算符和表達式C語言的根本運算符和表達式

C語言是以函數(shù)形式供給給用戶的,這些函數(shù)可便當?shù)恼{(diào)用,并具有多種循環(huán)、條件語句操縱程序流向,從而使程序完全布局化。這是我打定的C語言的根本運算符和表達式,快來看看吧。

根本運算符和表達式

運算符的種類、優(yōu)先級和結(jié)合性

C語言中運算符和表達式數(shù)量之多,在高級語言中是少見的。正是豐富的運算符和表達式使C語言功能特別完善。這也是C語言的主要特點之一。

C語言的運算符不僅具有不同的優(yōu)先級,而且還有一個特點,就是它的結(jié)合性。在表達式中,各運算量參與運算的先后依次不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便確定是自左向右舉行運算還是自右向左舉行運算。這種結(jié)合性是其它高級語言的運算符所沒有的,因此也增加了C語言的繁雜性。

運算符的種類C語言的運算符可分為以下幾類:

1.算術(shù)運算符

用于各類數(shù)值運算。包括加+、減-、乘*、除/、求余或稱模運算,%、自增++、自減--共七種。

2.關(guān)系運算符

用于對比運算。包括大于、小于、等于==、=、小于等于=和不等于!=六種。

3.規(guī)律運算符

用于規(guī)律運算。包括與、或||、非!三種。

4.位操作運算符

參與運算的量,按二進制位舉行運算。包括位與、位或|、位非~、位異或^、左移、右移六種。

5.賦值運算符

用于賦值運算,分為簡樸賦值=、復(fù)合算術(shù)賦值+=,-=,*=,/=,%=和復(fù)合位運算賦值=,|=,^=,=,=三類共十一種。

6.條件運算符

這是一個三目運算符,用于條件求值?:。

7.逗號運算符

用于把若干表達式組合成一個表達式,。

8.指針運算符

用于取內(nèi)容*和取地址二種運算。

9.求字節(jié)數(shù)運算符

用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)sizeof。

10.特殊運算符

有括號,下標[],成員→,.等幾種。

優(yōu)先級和結(jié)合性

C語言中,運算符的運算優(yōu)先級共分為15級。1級最高,15級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的舉行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級一致時,那么按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性自左至右和右結(jié)合性自右至左。例如算術(shù)運算符的結(jié)合性是自左至右,即先左后右。如有表達式x-y+z那么y應(yīng)先與“-”號結(jié)合,執(zhí)行x-y運算,然后再執(zhí)行+z的運算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合性運算符是賦值運算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=y=z運算。C語言運算符中有不少為右結(jié)合性,應(yīng)留神識別,以制止理解錯誤。

算術(shù)運算符和算術(shù)表達式根本的算術(shù)運算符

1.加法運算符“+”加法運算符為雙目運算符,即應(yīng)有兩個量參與加法運算。如a+b,4+8等。具有右結(jié)合性。

2.減法運算符“-”減法運算符為雙目運算符。但“-”也可作負值運算符,此時為單目運算,如-x,-5等具有左結(jié)合性。

3.乘法運算符“*”雙目運算,具有左結(jié)合性。

4.除法運算符“/”雙目運算具有左結(jié)合性。參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。假設(shè)運算量中有一個是實型,那么結(jié)果為雙精度實型。

voidmain

printf%d,%d,20/7,-20/7;

printf%f,%f,20.0/7,-20.0/7;

雙目運算具有左結(jié)合性。參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。假設(shè)運算量中有一個是實型,那么結(jié)果為雙精度實型。printf%d,%d,20/7,-20/7;

printf%f,%f,20.0/7,-20.0/7;

本例中,20/7,-20/7的結(jié)果均為整型,小數(shù)全部舍去。而20.0/7和-20.0/7由于有實數(shù)參與運算,因此結(jié)果也為實型。

5.求余運算符模運算符“%”雙目運算,具有左結(jié)合性。要求參與運算的量均為整型。求余運算的結(jié)果等于兩數(shù)相除后的余數(shù)。

voidmain

printf%d,100%3;

雙目運算,具有左結(jié)合性。求余運算符%要求參與運算的量均為整型。本例輸出100除以3所得的余數(shù)1。

自增1,自減1運算符自增1運算符記為“++”,其功能是使變量的值自增1。自減1運算符記為“--”,其功能是使變量值自減1。自增1,自減1運算符均為單目運算,都具有右結(jié)合性。可有以下幾種形式:++ii自增1后再參與其它運算。--ii自減1后再參與其它運算。

i++i參與運算后,i的值再自增1。

i--i參與運算后,i的值再自減1。

在理解和使用上輕易出錯的是i++和i--。更加是當它們出在較繁雜的表達式或語句中時,往往難于弄清,因此應(yīng)留心分析。

voidmain

inti=8;

printf%d,++i;

printf%d,--i;

printf%d,i++;

printf%d,i--;

printf%d,-i++;

printf%d,-i--;

i--8

i--i+1

i--i-1

i--i+1

i--i-1

i--i+1

i--i-1inti=8;

printf%d,++i;

printf%d,--i;

printf%d,i++;

printf%d,i--;

printf%d,-i++;

printf%d,-i--;

i的初值為8

第2行i加1后輸出故為9;

第3行減1后輸出故為8;

第4行輸出i為8之后再加1為9;

第5行輸出i為9之后再減1為8;

第6行輸出-8之后再加1為9;

第7行輸出-9之后再減1為8

voidmain

inti=5,j=5,p,q;

p=i+++i+++i++;

q=++j+++j+++j;

printf%d,%d,%d,%d,p,q,i,j;

i--5,j--5,p--0,q--0

i+i+ip,i+1--i,i+1--i,i+1--i

j+1-j,j+1-j,j+1-j,j+j+j-qinti=5,j=5,p,q;

p=i+++i+++i++;

q=++j+++j+++j;

這個程序中,對P=i+++i+++i++應(yīng)理解為三個i相加,故P值為15。然后i再自增1三次相當于加3故i的結(jié)果值為8。而對于q的值那么不然,q=++j+++j+++j應(yīng)理解為q先自增1,再參與運算,由于q自增1三次后值為8,三個8相加的和為24,j的結(jié)果值仍為8。算術(shù)表達式表達式是由常量、變量、函數(shù)和運算符組合起來的式子。一個表達式有一個值及其類型,它們等于計算表達式所得結(jié)果的值和類型。表達式求值按運算符的優(yōu)先級和結(jié)合性規(guī)定的依次舉行。單個的常量、變量、函數(shù)可以看作是表達式的特例。

算術(shù)表達式是由算術(shù)運算符和括號連接起來的式子,以下是算術(shù)表達式的例子:

a+ba*2/cx+r*8-a+b/7++isinx+siny++i-j+++k--

賦值運算符和賦值表達式

簡樸賦值運算符和表達式,簡樸賦值運算符記為“=”。由“=”連接的式子稱為賦值表達式。其一般形式為:變量=表達式例如:

x=a+b

w=sina+sinb

y=i+++--j賦值表達式的功能是計算表達式的值再賦予左邊的變量。賦值運算符具有右結(jié)合性。因此

a=b=c=5

可理解為

a=b=c=5

在其它高級語言中,賦值構(gòu)成了一個語句,稱為賦值語句。而在C中,把“=”定義為運算符,從而組成賦值表達式。只要表達式可以展現(xiàn)的地方均可展現(xiàn)賦值表達式。例如,式子x=a=5+b=8是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應(yīng)等于13。

在C語言中也可以組成賦值語句,按照C語言規(guī)定,任何表達式在其未尾加上分號就構(gòu)成為語句。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。

假設(shè)賦值運算符兩邊的數(shù)據(jù)類型不一致,系統(tǒng)將自動舉行類型轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。概括規(guī)定如下:

1.實型賦予整型,舍去小數(shù)片面。前面的'例2.9已經(jīng)說領(lǐng)略這種處境。

2.整型賦予實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)片面小數(shù)片面的值為0。

3.字符型賦予整型,由于字符型為一個字節(jié),而整型為二個字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。

4.整型賦予字符型,只把低八位賦予字符量。

voidmain

inta,b=322;

floatx,y=8.88;

charc1=k,c2;

a=y;

x=b;

a=c1;

c2=b;

printf%d,%f,%d,%c,a,x,a,c2;

inta,b=322;

floatx,y=8.88;

charc1=k,c2;

printf%d,%f,%d,%c,a=y,x=b,a=c1,c2=b;

本例說明了上述賦值運算中類型轉(zhuǎn)換的規(guī)矩。a為整型,賦予實型量y值888后只取整數(shù)8。x為實型,賦予整型量b值322,后增加了小數(shù)片面。字符型量c1賦予a變?yōu)檎?,整型量b賦予c2后取其低八位成為字符型b的低八位為01000010,即十進制66,按ASCII碼對應(yīng)于字符B。

復(fù)合賦值符及表達式

在賦值符“=”之前加上其它二目運算符可構(gòu)成復(fù)合賦值符。如

+=,-=,*=,/=,%=,=,=,=,^=,|=。構(gòu)成復(fù)合賦值表達式的一般形式為:變量雙目運算符=表達式它等效于變量=變量運算符表達式例如:a+=5等價于a=a+5x*=y+7等價于x=x*y+7r%=p等價于r=r%p

復(fù)合賦值符這種寫法,對初學(xué)者可能不習(xí)慣,但特別有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標代碼。逗號運算符和逗號表達式在

逗號運算符

C語言中逗號“,”也是一種運算符,稱為逗號運算符。其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。

其一般形式為:表達式1,表達式2其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。

voidmain

inta=2,b=4,c=6,x,y;

x=a+b,y=b+c;

printfy=%d,x=%d,y,x;

a--2,b--4,c--6,x--0,y--0

x--a+b,yb+c

本例中,y等于整個逗號表達式的值,也就是表達式2的值,x是第一個表達式的值。對于逗號表達式還要說明兩點:

1.逗號表達式一般形式中的表達式1和表達式2也可以又是逗號表達式。例如:表達式1,表達式2,表達式3形成了嵌套情形。因此可以把逗號表達式擴展為以下形式:表達式1,表達式2,…表達式n整個逗號表達式的值等于表達式n的值。

2.程序中使用逗號表達式,通常是要分別求逗號表達式內(nèi)各表達式的值,并不確定要求整個逗號表達式的值。

3.并不是在全體展現(xiàn)逗號的地方都組成逗號表達式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。

[Practice]//arithmeticinta,b,c;

floatd;

a=11;

b=235;

c=a+b-a*b;

d=floatc/floata;

a=c/a;Vtable

a,2,0

b,2,0

c,2,0

d,4,0.0

ofVtable

Vupdate

1,0;2,0;3,0

4,0.0

1,11

2,235

3,-2339

4,-212.636368

1,-212

ofVupdate

ofPractice

[Practice]//1inta,b,c1,c2;

a=25;

b=3243;

c1=b/a;

c2=b%a;Vtable

a,2,0

b,2,0

c1,2,0

c2,2,0

ofVtable

Vupdate

1,0;2,0;3,0

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論