繁体   English   中英

为什么在此for循环之后会出现分号?

[英]Why is there a semi-colon right after this for loop?

我碰到了这段代码

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

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

当我将其取出时,出现了一些错误。

这意味着没有初始化(已经在前几行中完成了)。

通常, for循环具有以下语法:

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

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

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

在缺少所有三个表达式的情况下查找for循环也是很常见的:

for (;;) {
    // something
}

这是一个无限循环,等效于此:

while (true) {
    // something
}

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

for循环包含三个部分:

for (initialization; condition; update)

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

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

for循环在其括号内包含三个参数:

第一个是启动块,您可以在其中创建仅在for循环范围内使用的变量(从左括号到右括号,或者对于for循环后的那一行而言);

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

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

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

通常你有

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

但你可以有

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

您甚至可以拥有这样的循环:

for(;;);

这意味着您无需初始化任何内容。 通常情况是

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

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

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

定义的for循环表示变量tail已被声明(并希望初始化)

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

for (;condition;increment);

表示这里没有初始化。

这是因为您有for循环语法

int tail;

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

第一个参数是初始值设定项,因此,如果您已初始化变量,则必须保留初始值设定项空间为空,并使用分号代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM