C語言

當前位置 /首頁/計算機/C語言/列表

C語言賦值運算子詳解

C語言賦值運算子是什麼呢,簡單賦值運算子記為“=”,由“= ”連線的式子稱為賦值表示式。下面小編為你介紹C語言賦值運算子吧!

C語言賦值運算子詳解

其一般形式為:

變數=表示式

例如:

x=a+b

w=sin(a)+sin(b)

y=i+++--j

賦值表示式的功能是計算表示式的值再賦予左邊的變數。賦值運算子具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。

在其它高階語言中,賦值構成了一個語句,稱為賦值語句。 而在C中,把“=”定義為運算子,從而組成賦值表示式。 凡是表示式可以出現的地方均可出現賦值表示式。

例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。

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

型別轉換

如果賦值運算子兩邊的資料型別不相同,系統將自動進行型別轉換,即把賦值號右邊的型別換成左邊的型別。具體規定如下:

實型賦予整型,捨去小數部分。

整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分(小數部分的'值為0)。

字元型賦予整型,由於字元型為一個位元組,而整型為二個位元組,故將字元的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字元型,只把低八位賦予字元量。

【例3-18】

#include

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",a,x,a,c2);

return 0;

}

本例表明了上述賦值運算中型別轉換的規則。a為整型,賦予實型量y值8.88後只取整數8。x為實型,賦予整型量b值322, 後增加了小數部分。字元型量c1賦予a變為整型,整型量b賦予c2 後取其低八位成為字元型(b的低八位為01000010,即十進位制66,按ASCII碼對應於字元B)。

注意:經大家反饋,筆者發現上面的例子容易造成誤解,現已對程式碼進行更改,更改時間 2014-07-04 09:12:45,看評論的讀者請注意評論時間,不要混淆。

更改後的程式碼如下:

#include

int main(void){

int a,c,b=322;

float x,y=8.88;

char c1=k,c2;

a=y;

x=b;

c=c1;

c2=b;

printf("a=%d, x=%f, c=%d, c2=%c", a, x, c, c2);

return 0;

}

輸出結果:

a=8, x=322.000000, c=107, c2=B

複合的賦值運算子

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

構成複合賦值表示式的一般形式為:

變數 雙目運算子=表示式

它等效於

變數=變數 運算子 表示式

例如:

a+=5 等價於 a=a+5

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

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

TAG標籤:語言 運算子 賦值 #