賦值運算符

賦值運算符

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

分類

簡單的最常用的=運算符

一開始可能會以為它是“等於”,其實不是的。它的作用是將一個表達式的值賦給一個左值。一個表達式或者是一個左值,或者是一個右值。所謂左值是指一個能用於賦值運算左邊的表達式。左值必須能夠被修改,不能是常量。我們用變數作左值,還可以看到,指針和引用也可以作左值。例如:

int a, b, c;

a=3;

b=4;

c = ( a + b )*(2*a - b) // 得出14

php賦值運算符

基本的賦值運算符是“=”。一開始可能會以為它是“等於”,其實不是的。它實際上意味著把右邊表達式的值賦給左邊的運算數。

賦值運算表達式的值也就是所賦的值。也就是說,“$a = 3”的值是 3。這樣就可以做一些小技巧: <?php

$a = ($b = 4) + 5; // $a 成了 9,而 $b 成了 4。

?>

在基本賦值運算符之外,還有適合於所有二元算術和字元串運算符的“組和運算符”,這樣可以在一個表達式中使用它的值並把表達式的結果賦給它,例如: <?php

$a = 3;

$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;

$b = "Hello ";

$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";

?>

注意賦值運算將原變數的值拷貝到新變數中(傳值賦值),所以改變其中一個並不影響另一個。這也適合於在很密集的循環中拷貝一些值例如大數組。自 php 4 起支持引用賦值,用 $var = &$othervar; 語法,但在 php 3 中不可能這樣做。引用賦值意味著兩個變數都指向同一個數據,沒有任何數據的拷貝。有關引用的更多信息見引用的說明。

複合的賦值運算符

複合的賦值運算符,又稱為帶有運算的賦值運算符,也叫賦值縮寫。

例如: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 += 25 n=n+25
-= n -= 25 n=n-25
*= n *= 25 n=n*25
/= n /= 25 n=n/25
%= n %= 25 n=n%25
<<= n <<= 25 n=n<<25
>>= n >>= 25 n=n>>25
&= n &= OxF2F2 n=n&OxF2F2
^= n ^= OxF2F2 n=n ^ OxF2F2
|= n |= OxF2F2 n=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→1

注意

1. 多重賦值表達式不能出現在變數說明中。例如:

int i=j=0;

是非法的。

例:有變數說明

int a=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。

相關詞條

相關搜尋

熱門詞條

聯絡我們