开发者社区> 问答> 正文

关于语句while (*s++ != '\0')的疑问

char strcat(char *s, char *t)
{
    while (*s != '\0')
        s++;
    while ((*s++ = *t++) != '\0')
        ;
}
实现了将字符数组t拷贝在字符数组s的后面,这个方法是可以正确运行的。
可是将其改成以下代码却不能正确运行,请问是什么原因呢?

char strcat(char *s, char *t)
{
    while (*s++ != '\0')
        ;
    while ((*s++ = *t++) != '\0')
        ;
}

展开
收起
a123456678 2016-06-08 20:09:23 2364 0
1 条回答
写回答
取消 提交回答
  • while (*s++ != '\0')
        ;
        
    等价于
    
    char c;
    do {
        c = *s;
        s++;
    } while (c != '\0');
    而
    
    全选复制放进笔记while (*s != '\0')
        s++;
    
    等价于
    
    char c = *s;
    while (c != '\0') {
        c = *s;
        s++;    
    }
    2019-07-17 19:32:39
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载