我遇到了这段代码
for(; tail < len;tail++){
str[tail] = 0;
为什么会有“;”就在“for(”?
之后当我拿出它时,它出现了一些错误。
答案 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)
其中任何部分都可以省略。
在您的示例中没有初始化部分(假设tail
和len
已设置为合理值)。
答案 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; }
第一个参数是初始化程序,所以如果你已经初始化了变量,那么你就保持清空初始化空间并改为使用分号。