为什么此函数的返回值始终为0?

时间:2017-10-03 05:21:47

标签: c++

写了这个函数,它接受两个字符串并输出常用字符数。无法让它与在线编译器一起工作......对我来说似乎很合适。

int commonCharacterCount(std::string s1, std::string s2) {
    int stringCount1[26]{ 0 };
    int stringCount2[26]{ 0 };
    int charGet;
    int total{ 0 };

    for (auto i = 0; i < s1.length(); i++)
    {
        charGet = s1[i];
        stringCount1[charGet - 97] = stringCount1[charGet - 97]++;
    }
    for (auto i = 0; i < s2.length(); i++)
    {
        charGet = s2[i];
        stringCount2[charGet - 97] = stringCount2[charGet - 97]++;
    }
    for (auto i = 0; i < 26; i++)
    {
        total = total + min(stringCount1[i], stringCount2[i]);
    }

    return total;
}

1 个答案:

答案 0 :(得分:3)

x++返回x的初始值

所以

stringCount1[charGet - 97] = stringCount1[charGet - 97]++; 返回stringCount1[charGet - 97]的初始值,表示0。或者可能未定义,具体取决于您的编译器版本,在我的情况下,它恰好返回初始值

只需使用stringCount1[charGet - 97]++stringCount1[charGet - 97] = stringCount1[charGet - 97] + 1