程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 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 <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",a,x,a,c2);

 return 0;

 }

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

 注意:經大家反饋,筆者發現上面的例子容易造成誤解,現已對代碼進行更改。

 更改後的代碼如下:

 #include <stdio.h>

 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 \n", 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

 復合賦值符這種寫法,對初學者可能不習慣,但十分有利於編譯處理,能提高編譯效率並產生質量較高的目標代碼。

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