二級C++精品課程3-1-6:C++運(yùn)算符之賦值運(yùn)算符

字號:

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。