+=,%=都为复合运算符。
先算a%3,a%3的意思是a对3取余,得到一个结果。
a%3=a%3的意思是a=a对(a%3)的结果取余,得到一个结果并赋值给a。
a+=a%=a%3的意思是a=a+(a%3=a%3)的结果,就得到了a 的值。
注意:在这个过程中a 值得变化。
扩展资料:
复合赋值运算符有下列这些:
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
%= 模运算赋值
<<= 左移赋值
>>= 右移赋值
&= 位逻辑与赋值
|= 位逻辑或赋值
^= 位逻辑异或赋值
参考资料来源:百度百科-复合赋值运算符
>>右移就是把这个数的末尾多少位去掉,如17>>3 表示 0001 0001 的最后3位去掉,就变成了 0000 0010
左移运算 左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。
例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6. 右移运算 右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
扩展资料:
位操作是程序设计中对位模式按位或二进制数的一元和二元操作。
在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。
在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。
右移运算符“>>”是双目运算符,右移n位就是除以2的n次方。
其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15,a>>2 表示把00001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
参考资料来源:百度百科-位运算符