当前位置: 代码迷 >> C语言 >> 请教关于程序的问题
  详细解决方案

请教关于程序的问题

热度:106   发布时间:2008-05-05 10:48:11.0
请教关于程序的问题
#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而不是ABLMNP?
当第八行改成 for( ;a[i]!='\0';i++); 是结果是ABLMNP
这两个程序的差别在哪?
搜索更多相关的解决方案: ABLMNP  include  void  

----------------解决方案--------------------------------------------------------
差别在第一次循环i的值
----------------解决方案--------------------------------------------------------
i++的执行时刻不同

[color=white]
----------------解决方案--------------------------------------------------------
while(a[i++]!='\0')
   b[i]=a[i];
在执行b[i]=a[i];之前,while的副作用已经生效
也就是说i已经自加了1
----------------解决方案--------------------------------------------------------
谢谢了!
----------------解决方案--------------------------------------------------------
  相关解决方案