有人可以向我解释为什么我的函数返回0而不是1吗?

时间:2017-01-13 07:43:04

标签: c++

计数器不应该到达' \ 0'在第1行和第2行,这两种方式都不能相互不同,所以函数跳过条件并返回1?

int funcX(const char *, const char *);

int main()
{
    char string1[40] = "line1",
    string2[40] = "line2";
    cout << funcX(string1, string2) << endl << endl;
    cin >> string1;
    return 0;
}

int funcX(const char *s1, const char *s2)
{
    for (; *s1 != '\0' && *s2 != '\0'; s1++, s2++) {
        cout << *s1 << " " << *s2<<endl;
        if (*s1 != *s2) {
            return 0;
        }
    }
    return 1;
}

1 个答案:

答案 0 :(得分:0)

该函数返回0,因为*s1 != *s2位于第五个字符(*s1=='1'*s2=='2')。循环永远不会达到第六个(null,'\0')字符。

Looking at the output,您可以看到在该索引处,两个char是不同的。