Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
这两个return语句似乎不相等,我想知道为什么吗?
无论isFound的值如何,都返回true。
返回isFound的值,在这种情况下为false。
我猜答案可能是isFound是局部变量,函数完成后被销毁了。
该函数的返回类型为const bool,但const似乎没有什么不同。
即使目标不在数组中,在main中的以下代码中也返回true。更改为isFound吗?真假;使它正常工作。
这与写
编辑:您说这总是返回
http://ideone.com/KwmXZb
仔细检查其余的代码。仅此一项肯定会返回
想改善这个问题吗? 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