不可以,只允许使用表达式或声明。
编辑:对不起。我以为你在谈论循环的条件部分。在循环的表达式部分中,仅允许使用表达式。
您可以使用包含此 for 循环的 lambda 表达式。例如
for ( i = 1;
i <= N;
[]( int i ) { for ( j = 1; j <= i; j++, printf("%c", '0' ) ); }( i ), i++)
这是一个示范性示例
#include <iostream>
int main()
{
int N = 10;
for ( int i = 1;
i < N;
[]( int i )
{
for ( int j = 1; j < i; j++, ( std::cout << '*' ) );
}( i ), i++ )
{
std::cout << std::endl;
}
return 0;
}
输出是
*
**
***
****
*****
******
*******
********
或者您可以在外循环之外定义 lambda 表达式,以使程序更具可读性。例如
#include <iostream>
int main()
{
int N = 10;
auto inner_loop = []( int i )
{
for ( int j = 1; j < i; j++, ( std::cout << '*' ) );
};
for ( int i = 1; i < N; inner_loop( i ), i++ )
{
std::cout << std::endl;
}
return 0;
}
请考虑到,在一般情况下,其他帖子中显示的嵌套循环无法用 lambda 表达式替换循环。例如,外循环可以包含continue
将跳过内循环的语句。因此,如果您需要在任何情况下都根据 continue 语句执行内部循环,那么使用 lambda 表达式进行构造将会很有帮助。:)