Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        4年前关闭。
                                                                                            
                
        
这两个return语句似乎不相等,我想知道为什么吗?

bool isFound = false;
return isFound;


无论isFound的值如何,都返回true。

bool isFound = false;
return isFound ? true: false;


返回isFound的值,在这种情况下为false。

我猜答案可能是isFound是局部变量,函数完成后被销毁了。

该函数的返回类型为const bool,但const似乎没有什么不同。

bool SecventialSearch(int* arr, int size, int target, long* time){

struct timeval start, stop;
bool isFound = false;
long seconds, useconds;
int* iter = arr;

gettimeofday(&start, NULL);

while (*iter != target && iter != &arr[size-1])
    iter++;

if (*iter == target )
    isFound = true;

gettimeofday(&stop, NULL);

seconds = stop.tv_sec - start.tv_sec;
useconds = stop.tv_usec - start.tv_usec;

*time = ((seconds)*1000000 + useconds);
return isFound;
}


即使目标不在数组中,在main中的以下代码中也返回true。更改为isFound吗?真假;使它正常工作。

if (SecventialSearch(testArr,testArrSize,5, &test))
    printf("Is true.");
else
    printf("Is false.");

最佳答案

我假设您的变量被声明为布尔型(bool isFound)。

表达式isFound ? true : false;是多余的。

如果true为true,则评估为isFound;如果false为false,则评估为isFound

它具有与编写isFound完全相同的行为。所以return isFound ? true : false;等效于return isFound;

同样适用于类似

if (isFound) {
    return true;
} else {
    return false;
}


这与写return isFound;相同

编辑:您说这总是返回true

bool isFound = false;
return isFound;


http://ideone.com/KwmXZb

仔细检查其余的代码。仅此一项肯定会返回false

08-06 16:15