首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按位变换会使我的程序停止?

按位变换会使我的程序停止?
EN

Stack Overflow用户
提问于 2012-09-16 18:23:25
回答 2查看 269关注 0票数 2

我正在处理一个赋值,其中我必须编写一个C函数,它通过查找最重要的集合位并返回该位的位置来计算无符号整数n的log2。例如,如果n为17 (0b10001),则函数应返回4。

下面是我到目前为止的代码,但按位操作会使程序停止。通过在第6-9行注释掉循环,程序工作得很好。我一辈子都无法理解它为什么会这样做。有人能帮我吗?

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>

int mylog2(unsigned int n) {
    int log = 1;
    while (n != 1) {
        n >> 1;
        log++;
    }
    return log;
}


int main() {
    int a;
    a = mylog2(17);
    printf("%d", a);
    getch();
    return(0);
}
EN

回答 2

Stack Overflow用户

发布于 2012-09-16 18:25:52

您有一个无限循环,因为您从不更改n的值,而不是n >> 1;,而是使用n = n >> 1

票数 3
EN

Stack Overflow用户

发布于 2012-09-16 18:27:07

看看你的时间循环。你做n >> 1,但你从不分配它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12449469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档