为什么以下代码的输出是“pune”?
#include <stdio.h>
#include<conio.h>
int main()
{
char str1[]="bombay";
char str2[]="pune";
char *s1=str1,*s2=str2;
while(*s1++=*s2++);
printf("%s",str1);
printf("\n");
getch();
}
答案 0 :(得分:1)
您只是将s2复制到s1。所以很明显输出应该是“pune”
答案 1 :(得分:0)
你写的是(* s1 ++ = * s2 ++); 最后的分号意味着while被视为语句而不是循环。 所以你正在尝试将s2的每个字符复制到s1。因此,在复制&#39; pune&#39;到s1,在s1的末尾有一个空字符。现在null也被复制到s2中。在打印字符串s1时,%s将打印字符串,直到找到null。因此,你得到普拉作为输出。