为什么在这个for循环之后有一个分号?

时间:2012-09-06 06:14:34

标签: java for-loop

我遇到了这段代码

for(; tail < len;tail++){
        str[tail] = 0;

为什么会有“;”就在“for(”?

之后

当我拿出它时,它出现了一些错误。

9 个答案:

答案 0 :(得分:8)

这意味着没有初始化(它已经在之前的行上完成)。

通常,for loop具有以下语法:

for (initialization; termination; increment) {
    statement(s)
}

所有三个表达式(初始化,终止和增量)都是可选的,但必须存在分号。您拥有的代码等同于以下while循环:

while (tail < len) {
    str[tail] = 0;
    tail++;
}

通常会看到缺少所有三个表达式的循环:

for (;;) {
    // something
}

这是一个无限循环,相当于:

while (true) {
    // something
}

答案 1 :(得分:1)

常规for循环的语法是for (initialization; termination; increment)。因此,必须预设所有三个组件才能使for循环有效并进行编译。

答案 2 :(得分:1)

for循环有三个部分:

for (initialization; condition; update)

其中任何部分都可以省略。

在您的示例中没有初始化部分(假设taillen已设置为合理值)。

答案 3 :(得分:1)

for循环在括号内有三个参数:

第一个是初始块,您可以在其中创建仅在for循环范围内生效的变量(从开始到结束括号,或者在for循环中对于那一行);

第二个是条件块,您可以在其中指定for循环运行的条件

第三个是后处理块,在for循环中每次迭代后应该发生什么。

这些块用分号分隔,每一个都是可选的。

通常你有

for(int i=0; i<10; i++);

但你可以

int i =0;
for(; i<10; i++);

你甚至可以像这样循环:

for(;;);

答案 4 :(得分:0)

这意味着您不会初始化任何内容。通常,它就像

for(i=1;i<something;i++)

在你的情况下,省略了部分i=1(初始化),这是完全正确的。但是,必须使用分号来分隔初始化部分和for循环的条件部分。

答案 5 :(得分:0)

tail必须在代码中的for之上的某处初始化。 这不是语法错误,它只是一个没有初始化的。

答案 6 :(得分:0)

定义的for循环意味着变量tail之前已被声明(并且希望被宣告)

答案 7 :(得分:0)

for(initialize the variable; condition to variable;increment in variable);

for (;condition;increment);

暗示这里没有初始化。

答案 8 :(得分:0)

这是因为你有for循环语法

int tail;

for(tail = 0; tail&lt; len; tail ++)
{
        str [tail] = 0; }

第一个参数是初始化程序,所以如果你已经初始化了变量,那么你就保持清空初始化空间并改为使用分号。

相关问题