按位运算改变值?
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++)
在这个循环中,:
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++)