C++ for(;i<;=m;i+;+;)是什么意思?

C++ for(;i<;=m;i+;+;)是什么意思?,c++,c,visual-c++,C++,C,Visual C++,我正在准备考试,我碰到了一个例子,上面写着: for(;i<=m;i++) (;i)的 我不明白的是为什么有一个“;”在它前面没有任何东西。它做什么,它意味着什么 这是一个没有任何作用的有效陈述 您可以在任意位置使用空语句。在循环构造中很常见这些语句。for语句的语法如下: for (declaration; condition; post-condition) 声明只发生一次。在每个循环开始时检查条件并确定循环是否继续,post条件发生在循环结束时 所有这些陈述都可以省略 您的循环只

我正在准备考试,我碰到了一个例子,上面写着:

for(;i<=m;i++)
(;i)的

我不明白的是为什么有一个“;”在它前面没有任何东西。它做什么,它意味着什么

这是一个没有任何作用的有效陈述


您可以在任意位置使用空语句。在循环构造中很常见这些语句。

for
语句的
语法如下:

for (declaration; condition; post-condition)
声明只发生一次。在每个循环开始时检查条件并确定循环是否继续,post条件发生在循环结束时

所有这些陈述都可以省略

您的循环只是一个不需要声明的
for
循环,可能是因为已经声明了某些内容,例如:

int i = 0;
for (;i<=m;++i)
在这方面,无限循环通常写为

for (;;)
您可能希望省略post条件,可能是因为您正在使用迭代器,并在循环过程中对其进行更改

for (auto it = std::begin(v); it != std::end(v);)

i变量必须在其他地方初始化。因此它从那里拾取值,循环从i的值迭代

它做什么,它意味着什么

这意味着for循环的初始化部分为空,即在循环范围内没有初始化任何循环变量。 这种构造在您希望在循环离开后访问循环变量的情况下最为常见,例如在

int i = 7;
for(; i < 100; ++i) {
    if(isPrime(i)) break;
}
assert(i == 11); // can access i now
inti=7;
对于(;i<100;++i){
如果(i)中断;
}
断言(i==11);//现在可以访问i了吗

这意味着此语句的一部分在之前的某个地方声明

i=0

for(;i<=m;i++) 
i=0

对于(;iso如果它什么也不做为什么会在那里?@BonQuiQui
for
必须有3个部分,由2个分号分隔。所有3个部分都是可选的,但分号必须保留在那里。如果它不在那里,不是更容易吗?@BonQuiQui那么你如何确定3个部分中的哪一个被省略了?是的,我现在知道了,非常感谢你,这意味着
for
语句的第一部分已经在代码中的某个地方设置好了。它在上下文中会更有意义-即提供正确的代码。您需要了解基本知识,请参阅for循环语法:就是这样-它什么都不做。分号是用来告诉编译器接下来要做的是退出循环的测试(或者不是)。大概,
i
是事先设置好的。请注意,您可以在该空间中放置任何想要的内容,包括与for循环的操作完全无关的内容。
i=0

for(;i<=m;i++)