【发布时间】:2021-01-05 03:17:50
【问题描述】:
我想比较两个数组。当数组中的任何元素不匹配时,我已将变量设置为 true,它会变为 false。我想返回那个变量,它是一个布尔值,但它不返回那个。这是为什么呢?
bool compare_arr(int arr1[], int len_arr1, int arr2[] ,int len_arr2){
cout << "Compare the two Arrays"<< endl;
bool result = true;
for(int x = 0; x < len_arr1; x++)
{
if(arr1[x]==arr2[x])
{
continue;
}
else
{
result = false;
break;
}
}
return result;
}
int main()
{
int arr1[] = {1,2,3,4};
int len_arr1 = sizeof(arr1)/sizeof(arr1[0]);
int arr2[] = {1,2,3,4};
int len_arr2 = sizeof(arr2)/sizeof(arr1[0]);
compare_arr(arr1,len_arr1,arr2,len_arr2);
return 0;
}
【问题讨论】:
-
但它没有返回那个。如果你不使用
compare_arr的结果,你怎么知道返回的函数是什么? -
函数
compare_arr()确实返回bool。但是main()不使用返回的结果(例如,将返回的值存储在变量中,将其与另一个值进行比较)。如果你想使用main()中的返回值,那么你需要明确地这样做——这不是靠魔法发生的。 -
试过调试了吗?你的发现是什么?
-
通常,
continue可以通过重写代码来消除,这样会更清晰。for (int x = 0; x < len_arr1; x++) { if (arr1[x] != arr2[x] { result = false; break; } }。我也倾向于删除break:for (int x = 0; x < len_arr1; x++) { if (arr1[x] != arr2[x] { return false; } } return true;
标签: c++ algorithm boolean equality function-definition