按位运算改变值?

Bit-wise operation change the value?

在这个循环中,:

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

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

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

下一个循环

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

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

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

或者将 shift 放在循环中。如果没有赋值语句,移位运算符本身不会更改操作数的值。

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

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