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的数。
如果将它们的首字母交换,则返回值大于零。
请问这该如何解释?
展开
 我来答
dukinkin
推荐于2016-04-28 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:932万
展开全部
返回的值取决于,两个字符串中第一个不相同的字符的ascii码大小情况
和字符串的长短没有必然联系

如果两个字符串前面的字符都相同,而一个长一点例如
"ABCD"和"ABCDEF"
那么比较完D之后,再比较的时候是第一个的结束位'\0'和'E'比较
也就是0和E的ascii比较,所以这时候较长的字符串"比较大"

但是如果在之前就比较出大小了,那么就和长度没有关系了
追问
那请问怎样比较单词的长短并排序呢(任意单词)
追答
如果先按字母顺序,再按长度排序,那么strcmp就可以完成字符串大小比较
最终比较的结果如果从小到大排列的话将会是按照字典里单词的顺序排列

如果要先按长短排序,然后再按字母顺序排队

那么就需要自己写函数,先用strlen获得字符串长度,比较字符串长短
在长度相同的时候再用strcmp判断字符串的大小
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式