程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言算術運算符 使用基礎教程

c語言算術運算符 使用基礎教程

編輯:關於C語言
 

算術運算符
    Turbo C的算術運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
       操作符                          作用
────────────────────────────
          +                        加, 一目取正
          -                        減, 一目取負
          *                             乘
          /                             除
          %                            取模
          --                            減1
          ++                            加1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━


    一、一目和二目操作
    一目操作是指對一個操作數進行操作。例如: -a是對a進行一目負操作。
    二目操作(或多目操作)是指兩個操作數(或多個操作數)進行操作。
    在Turbo C中加、減、乘、除、取模的運算與其它高級語言相同。需要注意
的是除法和取模運算。
    例如:
      15/2    是15除以2商的整數部分7
      15%2    是15除以2的余數部分1
    對於取模運算符"%", 不能用於浮點數。
    另外, 由於Turbo C中字符型數會自動地轉換成整型數,  因此字符型數也可
以參加二目運算。
    例如:
     main()
     {
          char m, n;     /*定義字符型變量*/
          m='c';         /*給m賦小寫字母'c'*/
          n=m+'A'-'a';   /*將c中的小寫字母變成大寫字母'B'後賦給n*/
          ...
     }
    上例中m='c'即m=98, 由於字母A和a的ASCII碼值分別為65和97。這樣可以將
小寫字母變成大寫字母, 反之, 如果要將大寫字母變成小寫字母,  則用c+ 'a'
-'A'進行計算。


    二、增量運算
    在Turbo C中有兩個很有用的運算符, 在其它高級語言中通常沒有。這兩個
運算符就是增1和減1運算符"++"和"--", 運算符"++"是操作數加1, 而"--" 則是
操作數減1。
    例如:
      x=x+1         可寫成x++, 或++x
      x=x-1         可寫成x--, 或--x
    x++(x--)與++x(--x)在上例中沒有什麼區別, 但x=m++和x=++m卻有很大差別。
      x=m++    表示將m的值賦給x後, m加1。
      x=++m    表示m先加1後, 再將新值賦給x。


    三、賦值語句中的數據類型轉換
    類型轉換是指不同類型的變量混用時的類型改變。
    在賦值語句中, 類型轉換規則是:
      等號右邊的值轉換為等號左邊變量所屬的類型。
    例如:
     main()
     {
          int i, j;      /*定義整型變量*/
          float f, g=2.58;    /*定義浮點型變量*/
          f=i*j;         /*i與j的乘積是整型數, 被轉換成為浮點數賦給f*/
          i=g;           /*g中的浮點型數轉換成為整型數賦給i*/
          ...
     }
    由於Turbo C按上述數據類型轉換規則, 因此在作除法運算時應特別注意。
    例如:
     main()
     {
          float f;
          int i=15;
          f=i/2;
     }
    上面程序經運行後, f=7並不等於准確值7.5。正確的程序應該是:
     main()
     {
          float f;
          int i=15;
          f=i/2.0;
     }
    也可直接將i定義為浮點數。


    5.2 關系運算符和邏輯運算符
    一、邏輯運算符
    邏輯運算符是指用形式邏輯原則來建立數值間關系的符號。
    Turbo C的邏輯運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        操作符                      作用
─────────────────────────────
          &&                       邏輯與
          ||                       邏輯或
          !                        邏輯非
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


    二、關系運算符
    關系運算符是比較兩個操作數大小的符號。
    Turbo C的關系運算符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        操作符                        作用
─────────────────────────────
          >                           大於
          >=                        大於等於
          <                           小於
          <=                        小於等於
          ==                          等於
          !=                         不等於
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    關系運算符和邏輯運算符的關鍵是真(true)和假(false)的概念。Turbo C中
true可以是不為0的任何值, 而false則為0。 使用關系運算符和邏輯運算符表達
式時, 若表達式為真(即true)則返回1, 否則, 表達式為假(即false),  則返回0。
    例如:
     100>99         返回1
     10>(2+10)      返回0
     !1&&0          返加0
    對上例中表達式!1&&0, 先求!1和先求1&&0將會等於出不同的結果,  那麼何
者優先呢? 這在Turbo C中是有規定的。 有關運算符的優先級本節後面將會講到。


    5.3 按位運算符
    Turbo C和其它高級語言不同的是它完全支持按位運算符。這與匯編語言的
位操作有些相似。
    Turbo C中按位運算符有:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        操作符                       作用
────────────────────────────
          &                        位邏輯與
          |                        位邏輯或
          ^                       位邏輯異或
          -                        位邏輯反
          >>                         右移
          <<                         左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    按位運算是對字節或字中的實際位進行檢測、設置或移位, 它只適用於字符
型和整數型變量以及它們的變體, 對其它數據類型不適用。
    關系運算和邏輯運算表達式的結果只能是1或0。 而按位運算的結果可以取0
或1以外的值。
    要注意區別按位運算符和邏輯運算符的不同, 例如, 若x=7, 則x&&8 的值為
真(兩個非零值相與仍為非零), 而x&8的值為0。
    移位運算符">>"和"<<"是指將變量中的每一位向右或向左移動, 其通常形式
為:
     右移:     變量名>>移位的位數
     左移:     變量名<<移位的位數
    經過移位後, 一端的位被"擠掉",   而另一端空出的位以0 填補,   所以,
Turbo C中的移位不是循環移動的。
    5.4 Turbo C的特殊運算符
    一、"?"運算符
    "?"運算符是一個三目運算符, 其一般形式是:
      <表達式1>?<表達式2>:<表達式3>;
    "?"運算符的含義是: 先求表達式1的值, 如果為真, 則求表達式2 的值並把
它作為整個表達式的值; 如果表達式1 的值為假, 則求表達式3 的值並把它作為
整個表達式的值。
    例如:
     main()
     {
          int x, y;
          x=50;
          y=x>70?100:0;
     }
    本例中, y將被賦值0。如果x=80, y將被賦值100。
    因此, "?"運算符可以代替某些if-then-else形式的語句。


    二、"&"和"*"運算符
    "&"運算符是一個返回操作數地址的單目操作符。
    "*"運算符是對"&"運算符的一個補充, 它返回位於這個地址內的變量值, 也
是單目操作符。
    例如:
     main()
     {
          int i, j, *m;
          i=10;
          m=&i;          /*將變量i的地址賦給m*/
          j=*m;          /*地址m所指的單元的值賦給j*/
     }
    上面程序運行後, i=10, m為其對應的內存地址, j的值也為10。


    三、","運算符
    ","運算符用於將多個表達式串在一起, ","運算符的左邊總不返回, 右邊表
達式的值才是整個表達式的值。
    例如:
     main()
     {
          int x, y;
          x=50;
          y=(x=x-5, x/5);
     }
    上面程序執行後y值為9, 因為x的初始值為50, 減5後變為45, 45除5為9賦給
y。
 


    四、sizeof運算符
    sizeof運算符是一個單目運算符, 它返回變量或類型的字節長度。
    例如:
     sizeof(double) 為8
     sizeof(int)    為2
    也可以求已定義的變量, 例如:
     float f;
     int i;
     i=sizeof(f);
    則i的值將為4。


    五、聯合操作
    Turbo C中有一特殊的簡寫方式, 它用來簡化一種賦值語句,  適用於所有的
雙目運算符。其一般形式為:
     <變量>=<變量><操作數><表達式>
    相當於
     <變量><操作數>=<表達式>
    例如:
      a=a+b         可寫成    a+=b
      a=a&b         可寫成    a&=b
      a=a/(b-c)     可寫成    a/=b-c
   5.5 Turbo C運算符的優先級
    Turbo C規定了運算符的優先次序即優先級。 當一個表達式中有多個運算符
參加運算時, 將按下表所規定的優先級進行運算。表中優先級從上往下逐漸降低,
同一行優先級相同。
    例如:
       表達式 10>4&&!(100<99)||3<=5 的值為1
       表達式 10>4&&!(100<99)&&3<=5 的值為0


              Turbo C運算符的優先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
                    表達式                                             ┃優先級
────────────────────────────╂────
  ()(小括號) [](數組下標) .(結構成員) ->(指針型結構成員)  ┃ 最高
────────────────────────────┃  ↑
 !(邏輯非) .(位取反) -(負號) ++(加1) --(減1) &(變量地址) ┃  │
────────────────────────────┃  │
   *(指針所指內容)  type(函數說明)  sizeof(長度計算)       ┃  │
────────────────────────────┃  │
     *(乘)     /(除)     %(取模)                                  ┃  │
────────────────────────────┃  │
     +(加)     -(減)                                                 ┃  │
────────────────────────────┃  │
     <<(位左移)          >>(位右移)                              ┃  │
────────────────────────────┃  │
     <(小於)   <=(小於等於)   >(大於)   >=(大於等於)       ┃  │
────────────────────────────┃  │
     ==(等於)       !=(不等於)                                    ┃  │
────────────────────────────┃  │
     &(位與)                                                          ┃  │
────────────────────────────┃  │
     ^(位異或)                                                       ┃  │
────────────────────────────┃  │
     |(位或)                                                           ┃  │
────────────────────────────┃  │
     &&(邏輯與)                                                      ┃  │
────────────────────────────┃  │
     ||(邏輯或)                                                       ┃  │
────────────────────────────┃  │
     ?:(?表達式)                                                      ┃  │
────────────────────────────┃  │
     =    +=   -=(聯合操作)                                       ┃  │
────────────────────────────┃  │
     ,(逗號運算符)                                                   ┃ 最低

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved