为什么 for(class A{} fkldsjflksdjflsj;;) 可以编译?
why for(class A{} fkldsjflksdjflsj;;) can compile?
我在 for 循环中放置了一些错误,但它似乎仍然可以编译。然后我尝试了for循环语法,似乎是下面的代码:一个class定义在for循环的开始条件里面,加上一些像这样的无意义的字符,可以编译。
int main(){
for(class A{} fkldsjflksdjflsj;;)
return 0;
}
还有。
for(class A;;)
for(class A{};;)
但不是。
for(class A fkldsjflksdjflsj;;)
为什么?
for
的第一部分可能包含变量声明。 (以及一些其他类型的声明)。幸运的是,这就是我们所拥有的:
class A
{
} zzz;
声明了一个类型为class A
的变量zzz
,它是一个没有用户定义成员的class。
class A fkldsjflksdjflsj
失败,因为 class A
未定义。但是如果你早点定义了class A
就好了。
您已在 for 循环范围内声明了一个名为 fkldsjflksdjflsj
的 class A
实例。 class A fkldsjflksdjflsj
声明失败,因为您没有指定 class 主体。
fkldsjflksdjflsj
不是 'some meaningless characters'。它是您刚刚通过语法 class A {}
声明的 class A
类型变量的名称。所以整个事情是一个变量声明,这正是 for
语句的第一部分所需要的。
我在 for 循环中放置了一些错误,但它似乎仍然可以编译。然后我尝试了for循环语法,似乎是下面的代码:一个class定义在for循环的开始条件里面,加上一些像这样的无意义的字符,可以编译。
int main(){
for(class A{} fkldsjflksdjflsj;;)
return 0;
}
还有。
for(class A;;)
for(class A{};;)
但不是。
for(class A fkldsjflksdjflsj;;)
为什么?
for
的第一部分可能包含变量声明。 (以及一些其他类型的声明)。幸运的是,这就是我们所拥有的:
class A
{
} zzz;
声明了一个类型为class A
的变量zzz
,它是一个没有用户定义成员的class。
class A fkldsjflksdjflsj
失败,因为 class A
未定义。但是如果你早点定义了class A
就好了。
您已在 for 循环范围内声明了一个名为 fkldsjflksdjflsj
的 class A
实例。 class A fkldsjflksdjflsj
声明失败,因为您没有指定 class 主体。
fkldsjflksdjflsj
不是 'some meaningless characters'。它是您刚刚通过语法 class A {}
声明的 class A
类型变量的名称。所以整个事情是一个变量声明,这正是 for
语句的第一部分所需要的。