c++ - 为什么我的函数返回错误值?

标签 c++

<分区>

Possible Duplicate:
question about leading zeros

stackoverflow.com/questions/3232534/question-about-leading-zeros .

尾随零的数量,来自 Hacker's Delight 的二进制搜索:

#include <iostream>
using namespace std;

int ntz(unsigned   x){

 int n;

 if ( x==0) return 32;
 n=1;
 if ((x & 0x0000FFFF))==0) {n=n+16; x=x>>16;}
 if ((x & 0x000000ff)==0) {n=n+8;x>>=8;}
 if ( x &0x0000000F)==0) {n=n+4; x>>=4;}
 if ((x & 0x00000003)==0) { n=n+2; x>>=2;}
   return n-(x &1);
}

int main(){

 unsigned   x;
 cin>>x;
 cout<<ntz(x)<<endl;

  return 0;
}

当我输入 8 时返回 8,当我输入 9 时返回相同的结果,为什么?

最佳答案

首先,您的代码无法编译。第 9 行和第 11 行中的括号没有正确平衡。

也就是说,修复错误并编译后,我得到以下结果:

$ ./a.out 
8
3

$ ./a.out 
9
0

关于c++ - 为什么我的函数返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232714/

相关文章:

c++ - 使用 libpcap 中断捕获的问题

c++ - std::map 中的最后一个键

c++ - 使用maven2构建基于autotools的C/C++包

C++11 lambda捕获 `this`并按值捕获局部变量

c++ - 指向对象的指针的未声明标识符 vector

c# - 未知语言随机码生成器

c++ - 引用 QString

c++ - 通过重复对象名称来调用静态方法?

c++ - 证书错误打开ssl C

c++ - 将模板参数传递给调用成员函数的函数