发布网友 发布时间:2022-04-23 10:52
共1个回答
热心网友 时间:2023-10-11 20:21
我觉得你应该先描述一下你为什么认为会有 j=j+1......
首先我猜,可能是逻辑没理清。
首先要明白,在第二个 wile 语句执行前,i 其实是处于字符串最末尾的'\0'位置,而 j 是等于 0。
而每个字符串末尾的'\0'就是用来标识一个字符串结束的,所以拼接字符串其实就是从串 1 的末尾'\0'位置开始讲串 2 的内容全部一个一个的粘贴过去(覆盖'\0'),然后在最后的末尾在添加一个 '\0'用以标识串的结束。
---
但是我又猜,万一是不明白自增、自减的含义呢?
s1[i++]=s2[j++];i++、j++ 意思是在语句结束后,各自加一。
所以
s1[i++]=s2[j++];等同于:
不过上面不是严格的等同,但是日常等同过去没问题,原理就涉及到汇编了。
---
最后我又想,也许楼主都会,只是因为代码十分的不友好,看走眼了呢?
所以我又放上增加了一点可读性(加了花括号)的原代码:
#include <stdio.h>最后的最后,怎么提问实在是一门精妙的艺术。