cin并继续用逗号分隔一行

时间:2017-10-27 12:25:33

标签: c++

为什么下面的代码不能编译?

for(int i = 0; i < 10; i++){
    if(i == 5)  i = 7, continue;
}

逗号可以用作分隔符和操作符。如果它像operator一样运行,它会计算两个表达式并返回最后一个表达式。我知道它不是作为运算符在这里,因为continue不是操作数。但为什么它不是两个陈述的分隔符。 它显示以下错误 -

error: expected primary-expression before ‘continue’
    if(i == 5)  i = 7, continue;

1 个答案:

答案 0 :(得分:14)

逗号令牌可以充当分隔符。但这些背景是明确列举的。它是声明,函数/模板参数,函数调用/模板实例化参数以及{1, 2}等初始化器的分隔符。它不是语句的分隔符,而是分号的作用。

逗号运算符分隔表达式continue 语句不是表达式。

不要成为一个聪明的&#34;编码器。写清楚代码,一目了然可以理解。将赋值放在自己的语句中,并将两个语句包装在一个块作用域中,以便if执行。