求助一道C语言

来源:百度知道 编辑:UC知道 时间:2024/05/20 06:18:27
#include<stdio.h>
#include<string.h>
void main()
{
char a[80]="AB",b[80]="LMNP";
int i=0;
strcat(a,b);
while(a[i++]!='\0') b[i]=a[i];
puts(b);
}
为什么会输出LBLMNP,请解释一下谢谢!

执行完strcat(a,b);以后,a[]="ABLMNP"
进入while 循环:
i=0
a[0]!='\0'所以i=1;
b[1]=a[1]
明白了???
实际上未进入循环体之前,i的值就为1了。
i++执行完以后,i的值就会加1

while(a[i++]!='\0') b[i]=a[i];
这句话中i++使得i值由0变1,而后b[1]=a[1],b[0]没有改变,所以输出的第一字符为‘L’,以此类推,其后为正常思维。
结果自然为:LBLMNP

hehe,very well.you