函数一直返回true,找不到错误?

Posted

技术标签:

【中文标题】函数一直返回true,找不到错误?【英文标题】:Function keeps returning true, cant find mistake? 【发布时间】:2018-11-18 12:04:26 【问题描述】:

我需要编写一个函数,该函数将采用两个数组及其大小,然后比较单元格是否相等。 如果单元格相等,则如果不是假,则必须返回真。 但是我似乎找不到我的错误,它一直返回 true。

#include <iostream>
using namespace std;

bool XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)
   
    for (int i = 0; i <= sizeofA && i <= sizeofB;i++)
      
         if (a[i]==b[i])
         
                return v;
                continue;
         
        else
        
                v = false;
                 break;
        
    
    return v;         
 


int main()
   
    bool x = true;
    int a[3] = 1,2,3,;
    int b[3] = 1,2,7;
    XArray(a,b,3,3,x);
    cout << x << endl;  

    return 0;

【问题讨论】:

你在逐行调试代码时观察到了什么? 你试过像int a[3] = 1,2,3; int b[3] = 2,3,4;这样的输入吗? 【参考方案1】:
    你应该关心数组大小不相等,你可能想要 在这种情况下说假 如果不使用函数的返回类型,请指定其返回 键入void。 您可以在 for 循环中进行一次比较来处理它。 另一个大问题是使用运算符&lt;= 和操作数sizeofA。您应该使用运算符&lt;,否则您会超出数组的范围,这可能会导致您的程序崩溃。

请调查以下代码。

void XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)
   
    v= true;
    if( sizeofA != sizeofB )
        v=false;
    
    else
        for (int i = 0; i < sizeofA; i++)
            if (a[i] != b[i])
                v= false;
                break;
            
        
    
 

PS:我觉得这个函数应该返回bool,不需要带最后一个参数v。你可以试着自己做个练习。

【讨论】:

你说得对,我不需要将 bool 作为参数,但是我该如何返回呢?有点糊涂 删除参数v,然后在确定这些数组是否相同时返回truefalse。将函数的结果赋值给main中的变量x,像这样x = XArray(a,b,3,3); 那么我将不得不将函数更改为 int not void 以便我可以返回对吗?我对将结果分配给它会做什么有点困惑? 您可以在我们将 false 分配给 v 的地方返回 false,并在函数结束时返回 true。【参考方案2】:

您应该尝试逐行调试代码。看来您是编码新手,解决问题时应注意以下几点:

如果您将 a[i] 与 b[i] (a[i]==b[i]) 进行比较,则返回 'v'。但是你不应该在这个块中做任何事情。因为在返回值之前需要等待检查所有数组元素。

【讨论】:

【参考方案3】:

你不应该返回 if(a[i] == b[i])。这样函数在找到第一个相等对后返回。而是遍历每一对单元格,如果它们不相等则返回。遍历所有内容后返回 true。您可以检查大小是否也相等。如果不是,那么您肯定知道数组不相等。您也不需要 bool 引用。

【讨论】:

我删除了 return v;从第一个 if 语句开始,现在它似乎工作了,这是你的意思吗? 是的。顺便说一句,你真的需要 v 参数吗?似乎是多余的。【参考方案4】:

也许你正在尝试这样做:

bool XArray(int a[],int b[],int sizeofA,int sizeofB, bool& v)

    for (int i = 0; i < sizeofA && i < sizeofB; i++)
    
        if (a[i]!=b[i]) return false;
    
    return v;

【讨论】:

以上是关于函数一直返回true,找不到错误?的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本:“找不到脚本函数”错误

错误:函数返回 None 或在没有返回语句的情况下结束。但在哪里找不到? [复制]

使用分页时 BigQuery 找不到工作

将变量名称传递给另一个函数中的 dplyr 函数会返回找不到对象错误

在 R 错误中重新投影栅格“找不到函数”wkt

我一直在codeigniter的ajax网址中找不到404错误