C语言 左移 右移的问题 << 或 >>

一个数左移以后,赋值给别的变量,这个数变化了没有,如果再进行一次左移,是对原来的数左移,还是在第一次左移的基础上移动
例 a=ox32 (16进制) 0011 0010
b=a<<2
这个时候b=1100 1000 对不对
那么此时a=?

继续
c=a<<2
请问c是在原来a的初值(ox32)上移动
还是在b的基础上移动

回答越详细越好,
好的 必定加分
此时c=?
b=?
a=?

左移 右移不会修改a本身

a=ox32 (16进制) 0011 0010
b=a<<2
这个时候b=1100 1000 对
那么此时a=0011 0010

继续
c=a<<2
请问c是在原来a的初值(ox32)上移动
这个时候c=1100 1000
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-02
a << 2 是不影响a 的值的,就像a +1不会把a值加1一样 。
a << 2只是一个表达式,返回的是表达式计算得到的值,其中并没有赋值(‘=’)操作啊。
第2个回答  2011-04-02
b=a<<2
这个时候b=1100 1000 对!
那么此时a=0011 0010 没变
接着
c=a<<2
c是在原来a的初值上移动,因为a没变
c=b=1100 1000
最后c=b=1100 1000
a=0011 0010
相似回答