C 在第一个分号之前没有内容的for循环如何工作?
我遇到过这种循环,它们的工作方式与预期的一样,但我很想了解C编译器是如何看待这些循环的代码>相当于以下内容:C 在第一个分号之前没有内容的for循环如何工作?,c,C,我遇到过这种循环,它们的工作方式与预期的一样,但我很想了解C编译器是如何看待这些循环的相当于以下内容: { a; while (b) { d; c; } } while (b) { d; c; } 因此,省略第一部分只会省略a,即初始化语句。因此,编译器将其视为等同于以下内容: { a; while (b) { d; c; } } while (b) { d; c; } 在for循环中,可以观察到以下
{
a;
while (b)
{
d;
c;
}
}
while (b)
{
d;
c;
}
因此,省略第一部分只会省略a
,即初始化语句。因此,编译器将其视为等同于以下内容:
{
a;
while (b)
{
d;
c;
}
}
while (b)
{
d;
c;
}
在for循环中,可以观察到以下三个阶段:
A();
while(B) {
D();
C();
}
(a;b;c)d代码>
A:初始声明
这是在循环开始时执行的赋值或声明
B:循环规定
这是继续迭代必须为真的规定
C:迭代声明
这是在每次循环迭代之后发生的声明或赋值
D:循环体
这是在A和B之后但在C之前执行的循环体
顺序如下所示:
A();
while(B) {
D();
C();
}
for
语句的第一部分是初始化语句。它只是初始化一个循环变量。当其用途重复时,通常省略,例如:
int i = 0;
...
for (; i < x; i++) { ... }
这里再次强调,
p=buf
将是重复的。C编译器如何看待这些循环。您想要AST还是什么?不,这两个答案回答了我的问题。