按位操作会改变值吗?

时间:2015-04-18 00:41:16

标签: c loops bit-manipulation

在这个循环中,:

for( i = 0; i < N>>1; i++)

N值在每次重复时都会发生变化吗?即如果N = 1024,那么第一个循环

for( i = 0; i < 512; i++)

,下一个循环

for( i = 0; i < 256; i++)

2 个答案:

答案 0 :(得分:2)

没有。如果你想这样做,那么像下面这样的结构会这样做:

for( i = 0; i < N; N >>= 1, i++)

或者将转换置于循环内部。如果没有赋值语句,移位运算符本身不会更改操作数的值。

答案 1 :(得分:2)

不,您正在移动N的值,但您没有为其分配新值,因此它不会更改。每次迭代都等同于:

for( i = 0; i < 512; i++)