这段代码的功能是比较两个字符串,找出它们第一个不同字符的位置(从0开始计数)。如果两个字符串完全相同,则输出-1。 代码的主要逻辑是:先读取两行字符串,然后逐个字符比较,一旦发现不同就输出当前位置并结束程序。如果循环结束都没发现不同,再根据是否都到达末尾来判断是完全相同还是其中一个字符串更长。 - 注意数组s1和s2的大小定义。s1的大小是1001,s2的大小是1002。如果两个字符串长度都可能达到1000,那么s1的大小可能不够存储1000个字符加上结尾的'\0',因为1001刚好够1000个字符加一个结束符。但s2的大小是1002,这多了一个字节。这种不一致可能暗示了设计上的问题,但实际功能上可能不会出错。 - 在while循环的条件中,当其中一个字符串先结束时,循环会停止。但此时如果另一个字符串还有剩余字符,那么第一个不同位置应该是较短字符串的长度。你的代码在循环结束后用else分支输出了i,这个i正好是较短字符串的长度,这是正确的。但要注意,如果两个字符串完全相同,循环结束后i会指向字符串末尾的'\0',此时条件s1[i]=='\0'&&s2[i]=='\0'成立,输出-1,这也是正确的。