谁帮我解释一下这道题?

来源:百度知道 编辑:UC知道 时间:2024/09/21 16:32:29
#include<stdio.h>
#include<string.h>
main()
{ char s1[80]="AB",s2[80]="CDEF";
int i=0;
strcat(s1,s2);
while(s1[i++]!='\0') s2[i]=s1[i];
puts(s2);
}
为什么是CBCDEF,怎么得到的?

main()
{ char s1[80]="AB",s2[80]="CDEF";
int i=0;
strcat(s1,s2); //这里将s1和s2连接后没有赋值给任何人
//所以s1还是s1,s2还是不变
while(s1[i++]!='\0') s2[i]=s1[i]; //由条件s1[i++]!='\0'和s1当前值为(s1[80]="AB" 其后元素为系统默认值\0 所以循环只做两次 即第0次和第1次 ) 即这里完成了将s1的AB覆盖了s2中的CD 这时s2 即为 :ABEF
puts(s2); //所以输出的将是ABEF

我解释了,要分啊

ABCDEF