3.1.6賦值運(yùn)算符
=是賦值運(yùn)算符,它的作用是將一個表達(dá)式的值賦給一個左值。一個表達(dá)式或者是一個左值,或者是一個右值。所謂左值是指一個能用于賦值運(yùn)算左邊的表達(dá)式。左值必須能夠被修改,不能是常量。我們現(xiàn)在是用變量作左值,以后還可以看到,指針和引用也可以作左值。例如:
int a, b, c;
a=3;
b=4;
c = ( a + b )*(2*a - b) // 得出14
賦值運(yùn)算符可與算術(shù)運(yùn)算符和位運(yùn)算符組合,產(chǎn)生許多變種,參見表3-9(實(shí)例中假定n是一個整型變量)。
賦值運(yùn)算本身也是一個表達(dá)式,即賦值表達(dá)式,該表達(dá)式的值是存儲在賦值運(yùn)算符左邊變量中的值。一個賦值表達(dá)式能作為另一個賦值表達(dá)式的右操作數(shù),多個賦值運(yùn)算符能夠連接在一個表達(dá)式中。例如:
int m, n, p;
m = n = p = 100; // 即: n = (m = (p = 100));
m = (n = p = 100) + 2; // 即: m = (n = (p = 100)) + 2;
m += n = p = 10; // 即: m = m + (n = p = 10);
表3-9 賦值運(yùn)算符
運(yùn)算符 實(shí)例 等價于
= 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 &= 0xF2F2 n = n & 0xF2F2
| = n |= 0xF2F2 n = n | 0xF2F2
^ = n ^= 0xF2F2 n = n ^ 0xF2F2
<< = n <<= 4 n = n << 4
>> = n >>= 4 n = n >> 4
賦值運(yùn)算符分為兩種:一種是簡單的最常用的=運(yùn)算符;二是復(fù)合的賦值運(yùn)算符,又稱為帶有運(yùn)算的賦值運(yùn)算符,也叫賦值縮寫。
例如:i=i+j;可表示為 i+=j;這里+=是復(fù)合賦值運(yùn)算符。
同樣的共有10種這樣的運(yùn)算符,它們是:
+= 加賦值
-= 減賦值
*= 乘賦值
/= 除賦值
%= 求余賦值
&= 按位與賦值
| = 按位或賦值
^= 按位異或賦值
<<= 左移位賦值
>>= 右移位賦值
<> 當(dāng)右操作數(shù)又是一個賦值表達(dá)式時,形成多重賦值表達(dá)式。例如:
i=j=0; //結(jié)果i、j的值都為0
注意:多重賦值表達(dá)式不能出現(xiàn)在變量說明中。例如:
int i=j=0;
是非法的。
例:有變量說明
int a=2,b;
指出下面表達(dá)式運(yùn)算后a和b的結(jié)果。
b+=b=++a;
答:a為3,b為6。
<> 有時將賦值運(yùn)算與比較運(yùn)算結(jié)合在一起形成嵌入賦值。例如:
while ((ch=getchar())!='\n');
這條語句的含義是:等待用戶按下回車鍵后程序向下執(zhí)行。
需要注意的是: x *= y+8等價于x=x*(y+8),不等價于 x = x*y+8。
同樣:z &= y-x等價于z = z & (y-x),而不等價于z = z &y -x。
=是賦值運(yùn)算符,它的作用是將一個表達(dá)式的值賦給一個左值。一個表達(dá)式或者是一個左值,或者是一個右值。所謂左值是指一個能用于賦值運(yùn)算左邊的表達(dá)式。左值必須能夠被修改,不能是常量。我們現(xiàn)在是用變量作左值,以后還可以看到,指針和引用也可以作左值。例如:
int a, b, c;
a=3;
b=4;
c = ( a + b )*(2*a - b) // 得出14
賦值運(yùn)算符可與算術(shù)運(yùn)算符和位運(yùn)算符組合,產(chǎn)生許多變種,參見表3-9(實(shí)例中假定n是一個整型變量)。
賦值運(yùn)算本身也是一個表達(dá)式,即賦值表達(dá)式,該表達(dá)式的值是存儲在賦值運(yùn)算符左邊變量中的值。一個賦值表達(dá)式能作為另一個賦值表達(dá)式的右操作數(shù),多個賦值運(yùn)算符能夠連接在一個表達(dá)式中。例如:
int m, n, p;
m = n = p = 100; // 即: n = (m = (p = 100));
m = (n = p = 100) + 2; // 即: m = (n = (p = 100)) + 2;
m += n = p = 10; // 即: m = m + (n = p = 10);
表3-9 賦值運(yùn)算符
運(yùn)算符 實(shí)例 等價于
= 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 &= 0xF2F2 n = n & 0xF2F2
| = n |= 0xF2F2 n = n | 0xF2F2
^ = n ^= 0xF2F2 n = n ^ 0xF2F2
<< = n <<= 4 n = n << 4
>> = n >>= 4 n = n >> 4
賦值運(yùn)算符分為兩種:一種是簡單的最常用的=運(yùn)算符;二是復(fù)合的賦值運(yùn)算符,又稱為帶有運(yùn)算的賦值運(yùn)算符,也叫賦值縮寫。
例如:i=i+j;可表示為 i+=j;這里+=是復(fù)合賦值運(yùn)算符。
同樣的共有10種這樣的運(yùn)算符,它們是:
+= 加賦值
-= 減賦值
*= 乘賦值
/= 除賦值
%= 求余賦值
&= 按位與賦值
| = 按位或賦值
^= 按位異或賦值
<<= 左移位賦值
>>= 右移位賦值
<> 當(dāng)右操作數(shù)又是一個賦值表達(dá)式時,形成多重賦值表達(dá)式。例如:
i=j=0; //結(jié)果i、j的值都為0
注意:多重賦值表達(dá)式不能出現(xiàn)在變量說明中。例如:
int i=j=0;
是非法的。
例:有變量說明
int a=2,b;
指出下面表達(dá)式運(yùn)算后a和b的結(jié)果。
b+=b=++a;
答:a為3,b為6。
<> 有時將賦值運(yùn)算與比較運(yùn)算結(jié)合在一起形成嵌入賦值。例如:
while ((ch=getchar())!='\n');
這條語句的含義是:等待用戶按下回車鍵后程序向下執(zhí)行。
需要注意的是: x *= y+8等價于x=x*(y+8),不等價于 x = x*y+8。
同樣:z &= y-x等價于z = z & (y-x),而不等價于z = z &y -x。

