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

时间:2010-07-12 22:16:50

标签: c++

  

可能重复:
  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相同的结果为什么?

1 个答案:

答案 0 :(得分:2)

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

那就是说,在修复错误和编译后,我得到以下结果:

$ ./a.out 
8
3

$ ./a.out 
9
0