賦值運算符

賦值運算符

基本的賦值運算符是“=”。他的優先順序別低於其他的運算符,所以對該運算符往往最後讀取。

分類


簡單的最常用的=運算符
一開始可能會以為它是“等於”,其實不是的。它的作用是將一個表達式的值賦給一個左值。一個表達式或者是一個左值,或者是一個右值。所謂左值是指一個能用於賦值運算左邊的表達式。左值必須能夠被修改,不能是常量。我們用變數作左值,還可以看到,指針和引用也可以作左值。例如:
inta,b,c;
a=3;
b=4;
c=(a+b)*(2*a-b)//得出14
php賦值運算符
基本的賦值運算符是“=”。一開始可能會以為它是“等於”,其實不是的。它實際上意味著把右邊表達式的值賦給左邊的運算數。
賦值運算表達式的值也就是所賦的值。也就是說,“$a=3”的值是3。這樣就可以做一些小技巧:
$a=($b=4)+5;//$a成了9,而$b成了4。
?>
在基本賦值運算符之外,還有適合於所有二元算術和字元串運算符的“組合運算符”,這樣可以在一個表達式中使用它的值並把表達式的結果賦給它,例如:
$a=3;
$a+=5;//sets$ato8,asifwehadsaid:$a=$a+5;
$b="Hello";
$b.="There!";//sets$bto"HelloThere!",justlike$b=$b."There!";
?>
注意賦值運算將原變數的值拷貝到新變數中(傳送值賦值),所以改變其中一個並不影響另一個。這也適合於在很密集的循環中拷貝一些數據例如大數據。自php4起支持引用賦值,用$var=&$othervar;語法,但在php3中不可能這樣做。引用賦值意味著兩個變數都指向同一個數據,沒有任何數據的拷貝。有關引用的更多信息見引用的說明。
複合的賦值運算符
複合的賦值運算符,又稱為帶有運算的賦值運算符,也叫賦值縮寫。
例如:i=i+j;可表示為i+=j;這裡+=是複合賦值運算符。
同樣的共有10種這樣的運算符,它們是:
+=加賦值
-=減賦值
*=乘賦值
/=除賦值
%=求余賦值
&=按位與賦值
|=按位或賦值
^=按位異或賦值
<<=左移位賦值
>>=右移位賦值
<>當右操作數又是一個賦值表達式時,形成多重賦值表達式。例如:
i=j=0;//結果i、j的值都為0
構成複合賦值表達式的一般形式
變數雙目運算符=表達式
它等效於
變數=變數運算符表達式
例如:
a+=5等價於a=a+5
x*=y+7等價於x=x*(y+7)
r%=p等價於r=r%p

運用


簡介

運算符實例等價於
=n=25
+=n+=25n=n+25
-=n-=25n=n-25
*=n*=25n=n*25
/=n/=25n=n/25
%=n%=25n=n%25
<<=n<<=25n=n<<25
>>=n>>=25n=n>>25
&=n&=OxF2F2n=n&OxF2F2
^=n^=OxF2F2n=n^OxF2F2
|=n|=OxF2F2n=n|OxF2F2
1.=賦值運算符
變數=表達式如:a=3;將a的值賦為3
2./=除后賦值
變數/=表達式如:a/=3;即a=a/3
3.*=乘后賦值
變數*=表達式如:a*=3;即a=a*3
4.%=取余后賦值
變數%=表達式如:a%=3;即a=a%3
5.+=加后賦值
變數+=表達式如:a+=3;即a=a+3
6.-=減后賦值
變數-=表達式如:a-=3;即a=a-3
7.<<=左移后賦值
變數<<=表達式左移就是將<<左邊的數的二進位各位全部左移若干位,<<右邊的數指定移動位數,高位丟棄,低位補0,移幾位就相當於乘以2的幾次方。
8.>>=右移后賦值
變數>>=表達式右移運算符是用來將一個數的各二進位位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被捨棄,對於無符號數,高位補0。對於有符號數,某些機器將對左邊空出的部分用符號位填補(即“算術移位”),而另一些機器則對左邊空出的部分用0填補(即“邏輯移位”)。注意:對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統。有的系統移入0,有的系統移入1。移入0的稱為“邏輯移位”,即簡單移位;移入1的稱為“算術移位”。
9.&=按位與后賦值
變數&=表達式按位與是指:參加運算的兩個數據,按二進位位進行“與”運算。如果兩個相應的二進位位都為1,則該位的結果值為1;否則為0。這裡的1可以理解為邏輯中的true,0可以理解為邏輯中的false。按位與其實與邏輯上“與”的運算規則一致。邏輯上的“與”,要求運算數全真,結果才為真。若,A=true,B=true,則A∩B=true。
10.^=按位異或后賦值
變數^=表達式參與運算的兩個力量按照對應地位進行差異或運算,且0^0→0,0^1→1,1^0→1,1^1→0。此外,一個數與0異或仍保持不變,即a^0=a,一個數與自己異或結果為0,即a^a=0。
11.|=按位或后賦值
變數|=表達式參與運算的兩個量按照對應位進行或運算,且0|0→0,0|1→1,1|0→1,對應的地位1。

注意

1.多重賦值表達式不能出現在變數說明中。例如:
inti=j=0;
是非法的。
例:有變數說明
inta=2,b;
指出下面表達式運算后a和b的結果。
b+=b=++a;
答:a為3,b為6。
<>有時將賦值運算與比較運算結合在一起形成嵌入賦值。例如:while((ch=getchar())!='\n');這條語句的含義是:等待用戶按下回車鍵后程序向下執行。
2.x*=y+8等價於x=x*(y+8),不等價於x=x*y+8。同樣:z&=y-x等價於z=z&(y-x),而不等價於z=z&y-x。
  • 目錄