函数不返回默认值C

Function not returning default value C++

本文关键字:默认值 返回 函数      更新时间:2023-10-16

此代码在调用这些返回时将返回1或0的值,但是如果返回2的默认返回值为2,则不会返回它。我确定这是我缺少的小东西,但我无法弄清楚。

int comp(string a, string b){
    char x;
    char y;
    int i = 1;
    int len;
    len = a.length();
    if(b.length() < (unsigned)len){
        len = b.length();
    }
    len++;
    while(i!=len){
        x = a.at(i);
        y = b.at(i);
        if(getNum(x) < getNum(y)){
            return 1;
        }
        else if (getNum(x) > getNum(y)){
            return 0;
        }
        i++;
    }
    return 2;   
}

解决方案:

i=0;

在while循环的顶部删除以下代码

len++;

您实际上在那里得到例外。因为在上次运行中,您的indexoutofbound异常。

如果您的字符串为" Hello",则长度为5,这意味着您的索引为0,1,2,3,4。

h e l l o
0 1 2 3 4

使用您的LEN ,它将长度提高到6。在最后一轮(5&lt; 6)的最后一轮中,您正在访问不存在的5的索引

希望它有帮助