2017-01-30 41 views
-4

我是編程新手,我似乎遇到了一個返回finalResult變量的問題,每當我將它傳回給main時,它都會返回true,無論答案是true還是false但如果我在第二個函數中輸出,我會得到正確的答案,這是否與「*結果」有關?返回bool值爲主C++總是返回true,無論回答如何

我收到了我的老師是如下的問題...

「,可能被傳遞到數組的引用的函數的HasValue,數組的大小和 搜索值。該函數應返回真,如果數組」

,所以我寫了這個在存在搜索值,

#include <iostream> 
#include <algorithm> 
using namespace std; 
bool HasValue(int number, long length, int arr[], bool finalResult); 
int main(int argc, const char* argv[]) 
{ 

    int num, arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    bool result; 
    auto array_length = end(arr) - begin(arr); //size of array 
    cout << "enter number: "; 
    cin >> num; 
    HasValue(num, array_length, arr, result); 
    cout << result << "\n"; 

    return 0; 
} 
bool HasValue(int number, long length, int arr[], bool finalResult) 
{ 

    int* end = arr + length; 
    int* result = find(arr, end, number); 
    if (result != end) 
     finalResult = true; 
    else 
     finalResult = false; 

    return finalResult; 
} 

我可能做一些非常愚蠢的,但我不能發現它,任何的幫助深表感謝,感謝你提前。

+3

你做了一件非常愚蠢的事情......你沒有給任何東西設置結果。 – immibis

+0

這裏是整個'HasValue'函數:'返回std :: find(arr,arr +長度,數字)!=數組+長度;' – PaulMcKenzie

+0

謝謝,id沒有意識到我不得不,我認爲它會默認作爲「0」 – Dean

回答

2

您的HasValue函數不會對傳遞給它的值finalResult進行任何操作(我猜這是因爲您傳遞了不確定的值)。而您的通話網站不會對返回的值HasValue做任何事情。請使用HasValue的回報點或通過finalResult作爲參考。

+0

非常感謝您的幫助,它工作完美,我通過參考 – Dean