根据C89 / C90标准,是否可以在for语句的increment子句中插入一段代码?
例如:
int x = 0, y;
for (y = 0; x + y < SOME_CONST; { y++; x++; })
{
//code
}
而不是:
int x = 0, y;
for (y = 0; x + y < SOME_CONST; x++)
{
y++;
//code
}
到目前为止我所知道的是,它不能与Microsoft C / C ++编译器一起使用,但标准说的是什么?
初始化条款怎么样?我可以在那里放一块代码吗?
答案 0 :(得分:3)
C89中for
迭代语句的语法是
for
(
表达 opt ;
表达 opt ;
表达式 opt )
声明
其中表达式 opt 是表达式或省略:例如for (;;);
有效C
。简单地说,{y++; x++;}
不 表达式 opt ,而是语句。所以它不能在for
循环中使用。 x++, y++
之类的内容是表达式,其值为y
之前的值,因此它可以是。
在C的更高版本中,第一个表达式 opt 被增强为子句,它允许像for (int a...
这样的代码。但这在C89中不有效。但for (x = 1, y = 2;
之类的代码有效,因为x = 1, y = 2
是表达式。
答案 1 :(得分:2)
您无法执行“阻止”代码,但您可以使用逗号分隔的语句。例如,
int x = 0, y;
for (y = 0; x + y < SOME_CONST; y++, x++ )
{
//code
}