while循环里的东西没看明白,还有后面的&&,为什么是&&*dst而不是&&*src
1条回答 默认 最新
关注
- 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都可以
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用- while循环里面的第一个表达式