2016-11-23 125 views
-4

当这些返回被调用时,这段代码将返回1或0的值,但如果它返回到默认返回值2,它不会返回它。我相信这是我错过的小事,但我无法弄清楚。函数不返回默认值C++

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; 
} 
+0

'len'变量应该声明为'size_t'或'unsigned int'。我从来没有遇到过负长度的字符串。 –

+1

无论这个功能应该做什么,它做错了。索引从0开始,而不是1. –

+1

请使用'getNum'的*定义*编辑您的文章。 –

回答

1

解决方案:

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 < 6)你特林访问的5项指标不存在

希望它可以帮助

+0

Omg谢谢。我知道这是愚蠢的。 – Upgrayded