Chinaunix首页 | 论坛 | 博客
  • 博客访问: 880321
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: C/C++

2011-09-16 14:41:55

简单的最常用的=运算符  基本的赋值运算符是“=”。他的别 低于其他的运算符,所以对该运算符往往最后读取。一开始可能会以为它是“等于”,其实不是的。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是 一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们现在是用变量作左值,以后还可以看到,指 针和引用也可以作左值。例如:   int a, b, c;   a=3;   b=4;   c = ( a + b )*(2*a - b) // 得出14复合的赋值运算符  复合的赋值运算符,又称为带有运算的赋值运算符,也叫赋值缩写。   例如: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 &= OxF2F2 n=n&OxF2F2
^=n ^= OxF2F2 n=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→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。
阅读(890) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~