2014-09-20 66 views
-3

我正在处理C中的代码,它返回最左边的1的索引。如果二进制数中没有1,它还需要返回-1。我的代码导致错误信息从终端:查找最左边的二进制数

警告:控制到达非void函数结束[-Wreturn型]

+0

你缺少一个右花括号有 – asimes 2014-09-20 21:31:25

+1

这还不是全部的代码 - 至少缺少一个右大括号。其中,因为你的错误即将到达函数的终点,所以非常重要。此外,想一想在数字中没有位的含义是什么 - 它有什么价值? – 2014-09-20 21:33:26

+1

'return -1;'在for循环之后移动。 – BLUEPIXY 2014-09-20 21:35:29

回答

0
int find_left_most_1 (int input) { 
    if (input) { 
    int i=number_of_bits; 
    for (i=number_of_bits; i>0; i--){ 
     if (a_function(input,i)==1) 
     return i; 
    } 
    return -1; 
    } 
    return -1; 
} 
+0

仍然没有对零位进行明显检查 – 2014-09-20 21:37:11

+0

现在是什么错误?我看不到任何? @保罗 – 2014-09-20 21:39:49

+0

我没有说这是不正确的。这只是没有效率。如果没有设置位,'input'有什么价值? – 2014-09-20 21:40:51