strcmp为何可以比较单词长度
strcmp这个函数不是逐个比较单词内各个字符的ascll码吗,那么返回值的正负与单词长度是没有必然联系的啊。如:t="CDEF"字符串s=“QTHRG”首先编译器会把t...
strcmp这个函数不是逐个比较单词内各个字符的ascll码吗,那么返回值的正负与单词长度是没有必然联系的啊。
如:
t="CDEF"字符串s=“QTHRG”
首先编译器会把t的第一元素和s的第一个元素比较,要是前者大于后者,比较就结束,返回一个大于o的数,要是后者大于前者,返回小于0 的数,要是相等,就把t的第2元素和s的第2个元素比较,重复刚才的过程。
t的第一个元素是‘c’,显然没有‘Q’,那就比较结束,返回一个小于0的数。
如果将它们的首字母交换,则返回值大于零。
请问这该如何解释? 展开
如:
t="CDEF"字符串s=“QTHRG”
首先编译器会把t的第一元素和s的第一个元素比较,要是前者大于后者,比较就结束,返回一个大于o的数,要是后者大于前者,返回小于0 的数,要是相等,就把t的第2元素和s的第2个元素比较,重复刚才的过程。
t的第一个元素是‘c’,显然没有‘Q’,那就比较结束,返回一个小于0的数。
如果将它们的首字母交换,则返回值大于零。
请问这该如何解释? 展开
1个回答
展开全部
返回的值取决于,两个字符串中第一个不相同的字符的ascii码大小情况
和字符串的长短没有必然联系
如果两个字符串前面的字符都相同,而一个长一点例如
"ABCD"和"ABCDEF"
那么比较完D之后,再比较的时候是第一个的结束位'\0'和'E'比较
也就是0和E的ascii比较,所以这时候较长的字符串"比较大"
但是如果在之前就比较出大小了,那么就和长度没有关系了
和字符串的长短没有必然联系
如果两个字符串前面的字符都相同,而一个长一点例如
"ABCD"和"ABCDEF"
那么比较完D之后,再比较的时候是第一个的结束位'\0'和'E'比较
也就是0和E的ascii比较,所以这时候较长的字符串"比较大"
但是如果在之前就比较出大小了,那么就和长度没有关系了
追问
那请问怎样比较单词的长短并排序呢(任意单词)
追答
如果先按字母顺序,再按长度排序,那么strcmp就可以完成字符串大小比较
最终比较的结果如果从小到大排列的话将会是按照字典里单词的顺序排列
如果要先按长短排序,然后再按字母顺序排队
那么就需要自己写函数,先用strlen获得字符串长度,比较字符串长短
在长度相同的时候再用strcmp判断字符串的大小
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询