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

