[英]Why can't you follow a catch clause in Java with a semi-colon the same way you can for a loop?
[英]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)
其中任何部分都可以省略。
在您的示例中,没有初始化部分(假定tail
和len
已经设置为合理值)。
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.