c++比较两个字符串大小。。。哪里错了
1个回答
展开全部
while 条件中, *s++ 和 *t++ 相比较,取值之后,s和t分别已经+1了,此时再结束while之后的时候,*s 和 *t 已经不能得出大小比较的结果了,稍后举例给你
-------------------
例如:以下两个字符串,"abcde" 和 "abdce",正确的比较结果应该是 -1,
而实际运行过程中,*s和*t在指向2号位置(c 和 d)的时候,while条件失效,但是判断完之后,他们已经分别指向3号位置了(d 和 c),返回的结果变成了 1。这样说你能明白吗
也就是说,结果比较的不是开始发生不同的字符,而是它们后面的那个字符。
-------------------
例如:以下两个字符串,"abcde" 和 "abdce",正确的比较结果应该是 -1,
而实际运行过程中,*s和*t在指向2号位置(c 和 d)的时候,while条件失效,但是判断完之后,他们已经分别指向3号位置了(d 和 c),返回的结果变成了 1。这样说你能明白吗
也就是说,结果比较的不是开始发生不同的字符,而是它们后面的那个字符。
追问
???
追答
A选项和B选项,都是这同样的问题,其中 *s == '\0' 和 !*s 是等价的。你自己把代码敲进去试一下不就知道结果了?测试分别用 "ac" 和 "bc" 两个字符串一测就知道哪个答案是正确的了,原因我已经在前面说了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询