c语言语句分析 while(s1[i]&&s2[i]&&s1[i]==s2[i])

问题描述:

c语言语句分析 while(s1[i]&&s2[i]&&s1[i]==s2[i])
void main()
{
char s1[300],s2[300];
int result,i=0;
printf("请输入两个字符串:");
scanf("%s%s",s1,s2);
while(s1[i]&&s2[i]&&s1[i]==s2[i]) i++;
result=s1[i]-s2[i];
printf("字符串%s",s1);
if(result++0)
printf("等于");
else if(result>0)
printf("大于");
else
printf("小于");
printf("字符串%s/n",s2);
}
这个语句怎么理解,它好在哪里?
1个回答 分类:综合 2014-11-20

问题解答:

我来补答
while(s1[i]&&s2[i]&&s1[i]==s2[i]) i++;这句话的主要目的是找出字符串s1和s2第一个不相同的字符的位置,当然为了防止s1是s2的子串或者s2是s1的子串(处理边界问题,防止死循环)另外加了两个条件s1[i]&&s2[i],也就是当其中有一个已经结束时,循环也暂停.然后记录下停下来的位置i,用字符串s1[i]的字符减去s2[i]的字符.整个函数就是判断两个字符串的大小,和strcmp功能一样.
再问: 老师说这个句子很棒,它好在哪里呢?(老师没讲,这是留下的作业)
再答: 这个确实写的不错,充分运用了&&运算符的特性,a&&b如果a已经是false了,那么b是不会执行的,也就是这里面的s1[i]&&s2[i]&&s1[i]==s2[i]的顺序也是很重要的,在进行s1[i]==s2[i]比较的时候保证了s1[i]和s2[i]不可能出界,然后另外的好处就是我上面的写的,本来这个里面的终止条件就是三种,第一种s1字符串已经完了;第二种是s2字符串完了;第三种s1[i]!=s2[i]; 一条语句搞定了这三个条件
 
 
展开全文阅读
剩余:2000
上一页:ghhhhh
下一页:概括每段段意