永发信息网

C语言的strcmp用函数表示

答案:1  悬赏:60  手机版
解决时间 2021-02-04 16:26
int __cdecl strcmp(const char *src,const char *dst)
{
int ret=0;
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src,++dst;
if(ret<0)
ret=-1;
else if(ret>0)
ret=1;
return(ret);
}
其中!(ret = *(unsigned char *)src - *(unsigned char *)dst)是什么意思?
++str和++dst在这里是不是和str++以及dst++的效果是一样的
最佳答案
1. 首先记住一件事,C语言中,数值0表示假,非0表示真(即!0=true)

2. *(unsigned char *)src,表示取src字符串中第1个字符
3. *(unsigned char *)dst,表示取dst字符串中第1个字符
4. ret=*(unsigned char *)src - *(unsigned char *)dst) ,表示2,3中这两个字符是否相等。如果相等,则为0。运算结果放在ret这个变量中。
5. !(ret = *(unsigned char *)src - *(unsigned char *)dst),如果相等,则!ret为真,否则为假

6. && *dst表示,询问dst字符串是否到达结尾?(即是否为NULL,也即是否为0?)
7. !(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)则表示上面(2-6)合起来,是否相等?是否达到dst结尾?只有两个字符相等,没到结果的时候,这个表达式才为真,才继续while() {}循环体内的代码:++src, ++dst;也就是两个字符串的指针,都指向各自字符串中的下一个字符的位置。
8. ++str和++dst在这里是不是和str++以及dst++的效果是一样的  ------ 是一样的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
各位诗人的外号
漂亮宝贝专业美发沙龙地址好找么,我有些事要
勾面的意思是什么啊?知道的请说下!
恒信科技产业园北区地址在哪,我要去那里办事
芜湖振强机械有限公司在什么地方啊,我要过去
一剪缘专业美发地址有知道的么?有点事想过去
轻松筹TA的支持者怎么查看?
稻黍的意思是什么啊?知道的请说下!
运行某程序时,假如存储容量不够,可通过( )
云南福晨农业科技有限公司怎么样?
catia中如何使用创建生料
二姐美发工作室地址有知道的么?有点事想过去
康之源大药房216门店怎么去啊,有知道地址的
一篇小说,男主角姓赵,女主角名字里有个婉字
能臣的意思是什么啊?知道的请说下!
推荐资讯
品胜当日达(交通大学门店)地址好找么,我有些
上四号渠村地址在哪,我要去那里办事
翼城至侯马高速限速
春天的衣服诗句
非举的意思是什么啊?知道的请说下!
家怡超市地址在什么地方,想过去办事
exoshowtime练习室里发生了什么里kal和世勋跳
关于下列图解的理解正确的是DA. 基因自由组合
绍兴哪个药店有卖鹿胎膏
坚强的树木有哪些?
生男生女预测
梦见下雨院子里的水不往外流往回流
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?