while(*p1&&*p2&&*p2++==*p1++);
当p2指向x p1指向s时
*p2++==*p1++ 为假 循环结束
但是因为是后缀 所以
p2++,p1++
p2指向y p1指向t
然后
cout<<*--p1-*--p2<
*--p1 的值为x
*--p2 的值为s
x-s=5
所以最后输出结果是5。
先说while循环条件吧:
p1,p2均为指向字符串常量的指针
*p1,*p2就表示对指针p1,p2的析取,
代码指针变量所指向的内容。
此处初值如下*p1=a,*p2=a;
条件中(*p1&&*p2)表示当两指针指向的
内容均不为0,
*p2++ == *p1++可理解为判断当前p1,p2
所指向的内容相等
循环过程:
*--p1,*--p2表示先将p1,p2的值减一
再取其所指向的内容