关于while(*s++=*t++)语句问题
引用:
===============================================================================================
yegaofei(踏雪而歌) 解释的不错!
while(*s++=*t++); 在语义上等同于(注意条件部分是一个=,不是2个):
while((*t) != 0){
*s = *t;
s++;
t++;
}
显然前者更紧凑,效率(可能)更高。
arrowcy(长弓手)把流程解释得很清楚了
我帮你再通俗说一遍:
while(*s++=*t++); 这个在程序员杂志中,可能先声明了s和t都是字符串指针吧
在执行的时候,实现了好几个逻辑,步骤如下:
⑴ *t 的赋值给 *s
⑵判断 *s 是否为真。如果为假,则跳出循环;否则继续执行第⑶步。因为字符串是以\0结尾的,遇到\0的时候,也就是*s为假,就跳出了字符串拷贝。
⑶ s 和 t 加 1,指向下一个地址,准备拷贝下一个字符。
==============================================================================================
有个问题 第一步(1)⑴ *t 的赋值给 *s 解释对吗?不用判断指针为空吗?
谢谢各位讨论