while(*s1&&*s2&&*s2++==*s1++);怎样理解

问题描述:

while(*s1&&*s2&&*s2++==*s1++);怎样理解
1个回答 分类:综合 2014-12-08

问题解答:

我来补答
*s2++相当于先*s2,然后s2++.
再问: main() {int n; char *p1,*p2; p1="abcxyz"; p2="abcijk"; n=fun(p1,p2); printf("%d\n",n); getch(); } fun(s1,s2) char *s1,*s2; {while(*s1&&*s2&&*s2++==*s1++); return(*s1-*s2); } 输出答案是15 在while(*s1&&*s2&&*s2++==*s1++);后加上 printf(“%c%c”,*s1,*s2);得到这时的*s1=y;*s2=j, 不明白为什么是y和j,谢谢
再答: *s2++相当于先*s2,然后s2 =s2+1。 当*s2!=*s1时跳出循环,即*s2等于i,*s1等于x时跳出循环,在跳出循环前s2 = s2+1,s1 =s1+1 即s2指向了j,而s1指向了y。 你可能认为是s2指向了i,而s1指向了x吧。假如是的话,那么没加1之前,二者都指向c,如果指向c,那么还不能跳出循环,那么此时的i和j还不能输出,一定是i和j碰面时才会跳出循环,一旦i和j碰面,那么s2,s1早已加1了。
 
 
展开全文阅读
剩余:2000
上一页:100 ,11
下一页:29