C語言程序設計譚浩強版 五



3.8 算術運算符和算術表達式


3.8.1 C運算符簡介


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

1.、算術運算符:用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、

      求餘(或稱模運算,%)、自增(++)、自減(--)共七種。

2、關係運算符:用於比較運算。包括大於(>)、小於(<)、等於(==)、

      大於等於(>=)、小於等於(<=)和不等於(!=)六種。

3、邏輯運算符:用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

4、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、

      位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

5、賦值運算符:用於賦值運算,分爲簡單賦值(=)、複合算術賦值

      (+=,-=,*=,/=,%=)和複合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

6、條件運算符:這是一個三目運算符,用於條件求值(?:)。

7、逗號運算符:用於把若干表達式組合成一個表達式(,)。

8、指針運算符:用於取內容(*)和取地址(&)二種運算。

9、求字節數運算符:用於計算數據類型所佔的字節數(sizeof)。

10、特殊運算符:有括號(),下標[],成員(→,.)等幾種。


3.8.2 算術運算符和算術表達式


1、基本的算術運算符包括 +、-、*、/和%(求餘)


注意:1)、所有的算術運算中,只要有實數參與,結果都爲double型,

                    因爲計算時都按double型計算

           2)、2個整型數據相除,結果爲整數。採用向0取整法,捨去小數部分。


2、算術表達式和運算符的優先級和結合性


表達式是由常量、變量、函數和運算符組合起來的式子。

運算符的結合性:

1)、左結合:算術運算符的結合性是自左至右,即先左後右。如有表達式

                        x-y+z則y應先與“-”號結合,執行x-y運算,然後再執行+z的運算。

2)、右結合:最典型的右結合性運算符是賦值運算符。如x=y=z,由於“=”的右結

                       合性,應先執行y=z,再執行x=(y=z)運算


3、強制類型轉換運算符

       

     其一般形式爲: (類型說明符) (表達式)

     其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。


4. 自增、自減運算符


++i       i自增1後再參與其它運算。

--i         i自減1後再參與其它運算。

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

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


3.9 賦值運算符和賦值表達式



1、賦值運算符


簡單賦值運算符和表達式:簡單賦值運算符記爲“=”。由“= ”連接的式子稱爲賦值表達式。

功能是:計算表達式的值再賦予左邊的變量。賦值運算符具有右結合性。

例如:

x=a+b

w=sin(a)+sin(b)

y=i+++--j


2、類型轉換


如果賦值運算符兩邊的數據類型不相同,系統將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。

具體規定如下:

1) 、實型賦予整型,捨去小數部分。前面的例子已經說明了這種情況。

2) 、整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分

        (小數部分的值爲0)。

3) 、字符型賦予整型,由於字符型爲一個字節,而整型爲二個字節,故將字符的

        ASCII碼值放到整型量的低八位中,高八位爲0。整型賦予字符型,只把低八

        位賦予字符量。


我們用下面的例子來說明一下類型轉換的問題

<span style="font-size:18px;">#include<stdio.h>
/* 數據類型轉換 */
int main(void)
{
	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\n",a,x,a,c2);
}</span>

運行結果爲:107,322.000000,107,B


 3.、複合的賦值運算符


在賦值符“=”之前加上其它二目運算符可構成複合賦值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。

構成複合賦值表達式的一般形式爲:

變量 雙目運算符 = 表達式

它等效於

變量 = 變量運算符 表達式

例如: a += 5 等價於a = a + 5

            x *= y + 7 等價於x = x * (y + 7)

            r %= p 等價於r = r % p


3.10 逗號運算符和逗號表達式



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

稱爲逗號表達式。

其一般形式爲: 表達式1,表達式2

其求值過程是分別求兩個表達式的值,並以表達式2的值作爲整個逗號表達式的值。

下面我們來舉個例子:

<span style="font-size:18px;">#include<stdio.h>
/* 逗號運算符和逗號表達式 */
int main(void)
{
	int a = 2,b = 4,c = 6,x,y;
	y = (x = a+b),(b + c);
	printf("y = %d,x = %d\n",y,x);
}</span>


運行結果爲:y = 6,x = 6



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章