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);
}
这个语句怎么理解,它好在哪里?

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]; 一条语句搞定了这三个条件

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-08
while(s1[i]&&s2[i]&&s1[i]==s2[i]) i++;
判读是否是str1,str2读到最后一个即转义字符“\0”,然后逐个比较是否相等,如果相等在做减法!比较字符串的大小。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网