2014-09-20 64 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