c - 按位运算改变值?

标签 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++)

最佳答案

事实并非如此。如果您想这样做,那么像下面这样的构造就可以做到这一点:

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

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

关于c - 按位运算改变值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711572/

相关文章:

c - 用于快速查询的整数 vector 散列

正确使用相同操作和不同类型的回调

c - sim900 与 micro 进行回显,但不执行任何操作

c++ - 在 C++ 中将位打包成一个整数

c++基于键盘输入的退出循环

java - 如何在循环中调用不同的 jTextareas?

java - 从提供的 InputStream 中读取可变长度整数

c - 静态填充一个巨大的结构

c - Solaris 64 位上的函数指针导致堆损坏

r - 将循环内的行名分配给构造的变量名称