在 for 语句头的 init-statment 中不允许使用逗号运算符的表达式

SLN*_*SLN 3 c++ for-loop comma-operator

...
for (int i = 1; i != 9; ++i)
 std::cout << i << std::endl;
...
Run Code Online (Sandbox Code Playgroud)

for 循环语句的头部由三部分组成:初始化语句、条件和表达式。在上面的例子中,init 语句是int i = 1;

似乎将带有逗号运算符的语句作为 init 语句包含在内是非法的。

...
for ( (int i , cin >> i) ; i != 9; ) // 2 Erros
 std::cout << i << std::endl;
...
Run Code Online (Sandbox Code Playgroud)

对于上面的示例,我收到了 2 个错误警告

( int i , cin >> i) ; i != 9;) 错误:'int' 之前的预期主表达式

(int i , cin >> i) ; i != 9;) 错误:i' 未在此范围内声明

有人可以向我解释这个错误的原因是什么吗?

Lig*_*ica 5

简单:第一条语句必须是声明语句。

你同样不能写:

int main()
{
    (int i , cin >> i);
}
Run Code Online (Sandbox Code Playgroud)

那里没有“逗号运算符”,只有语法错误,因为这不是 C++ 的工作方式。