#include
using namespace std;
int fun(char*, char*);
int main() {
char* p1, * p2;
p1 = "abcfgy";
p2 = "abcdhu";
int n = fun(p1, p2);
cout << n << endl;
}
int fun(char* s1, char* s2) {
while (*s1 && *s2 && *s1++ == *s2++);
{cout << s1<<endl;
s1--;
cout << s1<<endl;}
s2--;
return *s1 - *s2;
}
return *s1 - *s2;最后就是返回 'f' - 'd' = 2
while ( *s1 && * s2 && * s1++ == * s2++); --这个循环的意思是找出s1和s2两个字符串中第一个不相等的字符。由于最后都执行了++,所以后面的代码都执行了s1--和s2--。这样s1和s2都会指向最后一个比较的字符。如果这两个字符相同,那么说明整个字符串是相同的,函数就会return 0;否则就返回最后这个比较不相同的字符,显然这两个字符分别是s1中的f,以及s2中的d。那么'f'-'d'就是2
结果是
gy
fgy
2
while (*s1 && *s2 && *s1++ == *s2++) 之后多了个;
这样是空循环,直到找到两个字符串中不相同的字符 'f' 和 'd',返回 'f' - 'd' 就是2
解释如下图所示: