【发布时间】:2014-04-05 00:01:36
【问题描述】:
我正在阅读我朋友的代码,我看到了这个:
#include <stdio.h>
#include <conio.h>
void main()
{
char string1[125], string2 [10];
int i, j;
printf("\nstring 1: ");
gets(string1);
printf("\nNstring2 : ");
gets(string2);
i = 0;
while (string1[i] != 0)
{
j = 0;
while (string1[i++] == string2[j++] &&string1[i-1] != 0 && string2[j-1] != 0)
;//i dont know what it mean and why we can put ;after while loop
if (string1[i-1] != 0 && string2[j-1] == 0)
printf("\nfound at position %d", i-j);
}
getch();
}
为什么我们可以把;放在while循环之后,任何人都可以帮忙?
【问题讨论】:
-
通常称为“分号”。不确定英语是否是你的第一语言,所以仅供参考。
-
在这种情况下,
while条件完成了所有“工作”,因此不需要循环体。 -
但这是一个很好的观点:在
for或while或if之后反射性地(并且不正确地)添加;经常是新手程序中错误的原因(以及不那么新手的偶尔节目)。所以看到;应该有一个危险信号——如果你看到它,请仔细检查它是否真的属于它。 -
您也可以将
;单独放在一行中。它不必处于循环中。或者,您可以编写{ },它是一个空块,如果用作块,则相当于一个空语句。 -
放这样一个“空语句”是个好习惯;在它自己的路线上,强调它是故意的。最好发表评论,解释发生了什么以及为什么你有一个空的声明。
/* without running off the end of string1 or string2, advance i and j to the first character not matching between string1 an string2 */或类似的东西——如果没有其他 cmets,我不确定作者想要做什么。
标签: c