谢顶的神秘粉丝 2022-02-03 21:46 采纳率: 100%
浏览 19
已结题

模拟实现strcmp没看明白

img

while循环里的东西没看明白,还有后面的&&,为什么是&&*dst而不是&&*src

  • 写回答

1条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-02-03 22:03
    关注
    • while循环里面的第一个表达式!(ret=*(unsigned char*)src-*(unsigned char*)dst)是在判断当前指针指向的这两个字符是否相同
    • 如果相同,ret的值就是0,!是逻辑反操作符,!0就是真,判断下一个*dst
    • strcmp是比较函数,只要dst和src之间有一个为\0,程序就停止了
    • 假设src已经到头了,dst还没有,那就是0-任意一个数字,肯定是真,被!逻辑反后就是假,同样会退出循环。而当dst是\0,src不为\0的时候,ret的式子也肯定是真,!后同样会是假。
    • 最后留下的*dst应该是判断dst和src同时为\0的情况(即这两个字符串相同),这时候就会返回没有修改过的ret=0了。也就是说,这里是*src还是*dst都可以
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 2月3日

悬赏问题

  • ¥15 maixpy训练模型,模型训练好了以后,开发板通电会报错,不知道是什么问题
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容