久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      《C語(yǔ)言完全教程》第三章 基本運(yùn)算符和表達(dá)式

      第三章 基本運(yùn)算符和表達(dá)式

      運(yùn)算符的種類、優(yōu)先級(jí)和結(jié)合性
      C語(yǔ)言中運(yùn)算符和表達(dá)式數(shù)量之多, 在高級(jí)語(yǔ)言中是少見(jiàn)的。正是豐富的運(yùn)算符和表達(dá)式使C語(yǔ)言功能十分完善。 這也是C語(yǔ)言的主要特點(diǎn)之一。
      C語(yǔ)言的運(yùn)算符不僅具有不同的優(yōu)先級(jí), 而且還有一個(gè)特點(diǎn),就是它的結(jié)合性。在表達(dá)式中, 各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約, 以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算。 這種結(jié)合性是其它高級(jí)語(yǔ)言的運(yùn)算符所沒(méi)有的,因此也增加了C語(yǔ)言的復(fù)雜性。

      運(yùn)算符的種類C語(yǔ)言的運(yùn)算符可分為以下幾類:
      1.算術(shù)運(yùn)算符
      用于各類數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(–)共七種。
      2.關(guān)系運(yùn)算符
      用于比較運(yùn)算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六種。
      3.邏輯運(yùn)算符
      用于邏輯運(yùn)算。包括與(&&)、或(||)、非(!)三種。
      4.位操作運(yùn)算符
      參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
      5.賦值運(yùn)算符
      用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
      6.條件運(yùn)算符
      這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。
      7.逗號(hào)運(yùn)算符
      用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。
      8.指針運(yùn)算符
      用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。
      9.求字節(jié)數(shù)運(yùn)算符
      用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。
      10.特殊運(yùn)算符
      有括號(hào)(),下標(biāo)[],成員(→,.)等幾種。

      優(yōu)先級(jí)和結(jié)合性
      C語(yǔ)言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。 而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí), 則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。 C語(yǔ)言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式x-y+z則y應(yīng)先與“-”號(hào)結(jié)合, 執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。 最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。 C語(yǔ)言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤。

      算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本的算術(shù)運(yùn)算符
      1.加法運(yùn)算符“+”加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算。如a+b,4+8等。具有右結(jié)合性。
      2.減法運(yùn)算符“-”減法運(yùn)算符為雙目運(yùn)算符。但“-”也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,如-x,-5等具有左結(jié)合性。
      3.乘法運(yùn)算符“*”雙目運(yùn)算,具有左結(jié)合性。
      4.除法運(yùn)算符“/”雙目運(yùn)算具有左結(jié)合性。參與運(yùn)算量均為整型時(shí), 結(jié)果也為整型,舍去小數(shù)。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。
      void main(){
      printf(“nn%d,%dn”,20/7,-20/7);
      printf(“%f,%fn”,20.0/7,-20.0/7);
      }
      雙目運(yùn)算具有左結(jié)合性。參與運(yùn)算量均為整型時(shí), 結(jié)果也為整型,舍去小數(shù)。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。 printf(“nn%d,%dn”,20/7,-20/7);
      printf(“%f,%fn”,20.0/7,-20.0/7);
      本例中,20/7,-20/7的結(jié)果均為整型,小數(shù)全部舍去。而20.0/7和-20.0/7由于有實(shí)數(shù)參與運(yùn)算,因此結(jié)果也為實(shí)型。
      5.求余運(yùn)算符(模運(yùn)算符)“%”雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。 求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。
      void main(){
      printf(“%dn”,100%3);
      }
      雙目運(yùn)算,具有左結(jié)合性。求余運(yùn)算符% 要求參與運(yùn)算的量均為整型。本例輸出100除以3所得的余數(shù)1。

      自增1,自減1運(yùn)算符
      自增1運(yùn)算符記為“++”,其功能是使變量的值自增1。自減1運(yùn)算符記為“–”,其功能是使變量值自減1。自增1,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性??捎幸韵聨追N形式: ++i i自增1后再參與其它運(yùn)算。–i i自減1后再參與其它運(yùn)算。
      i++  i參與運(yùn)算后,i的值再自增1。
      i–  i參與運(yùn)算后,i的值再自減1。
      在理解和使用上容易出錯(cuò)的是i++和i–。 特別是當(dāng)它們出在較復(fù)雜的表達(dá)式或語(yǔ)句中時(shí),常常難于弄清,因此應(yīng)仔細(xì)分析。
      void main(){
      int i=8;
      printf(“%dn”,++i);
      printf(“%dn”,–i);
      printf(“%dn”,i++);
      printf(“%dn”,i–);
      printf(“%dn”,-i++);
      printf(“%dn”,-i–);
      } i<–8
      i<–i+1
      i<–i-1
      i<–i+1
      i<–i-1
      i<–i+1
      i<–i-1 int i=8;
      printf(“%dn”,++i);
      printf(“%dn”,–i);
      printf(“%dn”,i++);
      printf(“%dn”,i–);
      printf(“%dn”,-i++);
      printf(“%dn”,-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)
      void main(){
      int i=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+i—>p,i+1–>i,i+1–>i,i+1–>i
      j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;
      p=(i++)+(i++)+(i++);
      q=(++j)+(++j)+(++j);
      這個(gè)程序中,對(duì)P=(i++)+(i++)+(i++)應(yīng)理解為三個(gè)i相加,故P值為15。然后i再自增1三次相當(dāng)于加3故i的最后值為8。而對(duì)于q 的值則不然,q=(++j)+(++j)+(++j)應(yīng)理解為q先自增1,再參與運(yùn)算,由于q自增1三次后值為8,三個(gè)8相加的和為24,j的最后值仍為8。算術(shù)表達(dá)式表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來(lái)的式子。 一個(gè)表達(dá)式有一個(gè)值及其類型, 它們等于計(jì)算表達(dá)式所得結(jié)果的值和類型。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)行。 單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。

      算術(shù)表達(dá)式
      是由算術(shù)運(yùn)算符和括號(hào)連接起來(lái)的式子, 以下是算術(shù)表達(dá)式的例子:
      a+b  (a*2)/c (x+r)*8-(a+b)/7  ++i sin(x)+sin(y)  (++i)-(j++)+(k–)

      賦值運(yùn)算符和賦值表達(dá)式
      簡(jiǎn)單賦值運(yùn)算符和表達(dá)式,簡(jiǎn)單賦值運(yùn)算符記為“=”。由“= ”連接的式子稱為賦值表達(dá)式。其一般形式為: 變量=表達(dá)式 例如:
      x=a+b
      w=sin(a)+sin(b)
      y=i+++–j 賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此
      a=b=c=5
      可理解為
      a=(b=(c=5))
      在其它高級(jí)語(yǔ)言中,賦值構(gòu)成了一個(gè)語(yǔ)句,稱為賦值語(yǔ)句。 而在C中,把“=”定義為運(yùn)算符,從而組成賦值表達(dá)式。 凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。例如,式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a(bǔ),b相加,和賦予x ,故x應(yīng)等于13。
      在C語(yǔ)言中也可以組成賦值語(yǔ)句,按照C語(yǔ)言規(guī)定, 任何表達(dá)式在其未尾加上分號(hào)就構(gòu)成為語(yǔ)句。因此如x=8;a=b=c=5;都是賦值語(yǔ)句,在前面各例中我們已大量使用過(guò)了。
      如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同, 系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:
      1.實(shí)型賦予整型,舍去小數(shù)部分。前面的例2.9已經(jīng)說(shuō)明了這種情況。
      2.整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放, 即增加小數(shù)部分(小數(shù)部分的值為0)。
      3.字符型賦予整型,由于字符型為一個(gè)字節(jié), 而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。
      4.整型賦予字符型,只把低八位賦予字符量。
      void main(){
      int a,b=322;
      float x,y=8.88;
      char c1=’k’,c2;
      a=y;
      x=b;
      a=c1;
      c2=b;
      printf(“%d,%f,%d,%c”,a,x,a,c2);
      }
      int a,b=322;
      float x,y=8.88;
      char c1=’k’,c2;
      printf(“%d,%f,%d,%c”,a=y,x=b,a=c1,c2=b);
      本例表明了上述賦值運(yùn)算中類型轉(zhuǎn)換的規(guī)則。a為整型,賦予實(shí)型量y值888后只取整數(shù)8。x為實(shí)型,賦予整型量b值322, 后增加了小數(shù)部分。字符型量c1賦予a變?yōu)檎停土縝賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進(jìn)制66,按ASCII碼對(duì)應(yīng)于字符B)。

      復(fù)合賦值符及表達(dá)式
      在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如
      +=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。 構(gòu)成復(fù)合賦值表達(dá)式的一般形式為: 變量 雙目運(yùn)算符=表達(dá)式 它等效于 變量=變量 運(yùn)算符 表達(dá)式 例如: a+=5 等價(jià)于a=a+5  x*=y+7 等價(jià)于x=x*(y+7)  r%=p 等價(jià)于r=r%p
      復(fù)合賦值符這種寫(xiě)法,對(duì)初學(xué)者可能不習(xí)慣, 但十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在

      逗號(hào)運(yùn)算符
      C語(yǔ)言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。 其功能是把兩個(gè)表達(dá)式連接起來(lái)組成一個(gè)表達(dá)式, 稱為逗號(hào)表達(dá)式。
      其一般形式為: 表達(dá)式1,表達(dá)式2 其求值過(guò)程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號(hào)表達(dá)式的值。
      void main(){
      int a=2,b=4,c=6,x,y;
      y=(x=a+b),(b+c);
      printf(“y=%d,x=%d”,y,x);
      }
      a<–2,b<–4,c<–6,x<–0,y<–0
      x<–a+b,y<—b+c
      本例中,y等于整個(gè)逗號(hào)表達(dá)式的值,也就是表達(dá)式2的值,x是第一個(gè)表達(dá)式的值。對(duì)于逗號(hào)表達(dá)式還要說(shuō)明兩點(diǎn):
      1.逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2 也可以又是逗號(hào)表達(dá)式。例如: 表達(dá)式1,(表達(dá)式2,表達(dá)式3) 形成了嵌套情形。因此可以把逗號(hào)表達(dá)式擴(kuò)展為以下形式: 表達(dá)式1,表達(dá)式2,…表達(dá)式n 整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。
      2.程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。
      3.并不是在所有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式,如在變量說(shuō)明中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。
      [Practice] //arithmeticint a,b,c;
      float d;
      a=11;
      b=235;
      c=a+b-a*b;
      d=(float)c/(float)a;
      a=c/a;’Vtable
      a,2,0
      b,2,0
      c,2,0
      d,4,0.0
      of Vtable
      ‘Vupdate
      1,0;2,0;3,0
      4,0.0
      1,11
      2,235
      3,-2339
      4,-212.636368
      1,-212
      of Vupdate
      of Practice
      [Practice] //1int a,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
      of Vtable
      ‘Vupdate
      1,0;2,0;3,0;4,0
      1,25
      2,3243
      3,129
      4,18
      of Vupdate
      of Practice
      [Practice] //1int a,b,c;
      a=25;
      b=40;
      c=a+b,c+35;’Vtable
      a,2,0
      b,2,0
      c,2,0
      of Vtable
      ‘Vupdate
      1,0;2,0;3,0
      1,25
      2,40
      3,65
      of Vupdate
      of Practice

      小結(jié)

      1.C的數(shù)據(jù)類型
      基本類型,構(gòu)造類型,指針類型,空類型
      2.基本類型的分類及特點(diǎn)
      類型說(shuō)明符      字節(jié)       數(shù)值范圍
      字符型char        1        C字符集
      基本整型int       2        -32768~32767
      短整型short int     2         -32768~32767
      長(zhǎng)整型 long int     4      -214783648~214783647
      無(wú)符號(hào)型 unsigned    2        0~65535
      無(wú)符號(hào)長(zhǎng)整型 unsigned long 4      0~4294967295
      單精度實(shí)型 float    4       3/4E-38~3/4E+38
      雙精度實(shí)型 double   8       1/7E-308~1/7E+308
      3.常量后綴
      L或l 長(zhǎng)整型
      U或u 無(wú)符號(hào)數(shù)
      F或f 浮點(diǎn)數(shù)
      4.常量類型
      整數(shù),長(zhǎng)整數(shù),無(wú)符號(hào)數(shù),浮點(diǎn)數(shù),字符,字符串,符號(hào)常數(shù),轉(zhuǎn)義字符。
      5.數(shù)據(jù)類型轉(zhuǎn)換
      ·自動(dòng)轉(zhuǎn)換
      在不同類型數(shù)據(jù)的混合運(yùn)算中,由系統(tǒng)自動(dòng)實(shí)現(xiàn)轉(zhuǎn)換, 由少字節(jié)類型向多字節(jié)類型轉(zhuǎn)換。 不同類型的量相互賦值時(shí)也由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換,把賦值號(hào)右邊的類型轉(zhuǎn)換為左邊的類型。
      ·強(qiáng)制轉(zhuǎn)換
      由強(qiáng)制轉(zhuǎn)換運(yùn)算符完成轉(zhuǎn)換。
      6.運(yùn)算符優(yōu)先級(jí)和結(jié)合性
      一般而言,單目運(yùn)算符優(yōu)先級(jí)較高,賦值運(yùn)算符優(yōu)先級(jí)低。 算術(shù)運(yùn)算符優(yōu)先級(jí)較高,關(guān)系和邏輯運(yùn)算符優(yōu)先級(jí)較低。 多數(shù)運(yùn)算符具有左結(jié)合性,單目運(yùn)算符、三目運(yùn)算符、 賦值
      7.表達(dá)式
      表達(dá)式是由運(yùn)算符連接常量、變量、函數(shù)所組成的式子。 每個(gè)表達(dá)式都有一個(gè)值和類型。 表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性所規(guī)定的順序進(jìn)行。

       

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)