函数未返回默认值C ++

时间:2016-11-23 23:12:26

标签: c++

当调用这些返回值时,此代码将返回值1或0,但如果它降为默认返回值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;   
}

1 个答案:

答案 0 :(得分:1)

解决方案:

i=0;

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

len++;

你实际上是在那里得到一个例外。因为在上次运行时,您有indexoutofbound异常。

如果你的字符串是&#34;你好&#34;长度为5表示您的指数为0,1,2,3,4。

h e l l o
0 1 2 3 4

使用你的len ++它将长度增加到6.并且在最后一轮while(5&lt; 6)中你要访问不存在的索引5

希望有所帮助