为什么break不能和三元运算符一起使用?
while(*p!=' ' && *q!=' ')
{
if(*p==*q)
{
p++;
q++;
c++;
}
else
break;
}
我用三元运算符写了这个,但是为什么它给出了break语句的错误?
*p==*q?p++,q++,c++:break;
gcc编译器给出这个错误:'break'之前的预期表达式
当你使用三元运算符时,它不像if
。 三元运算符具有这种形式:
(condition ? expression_if_true : expression_if_false);
这两个表达式必须有相同的类型,否则就会造成无意义。
正如Thilo所说,你不能在这个操作符中使用语句,只能使用表达式。 这是因为根据条件,整个三元运算符必须是一个表达式。
语法是:
(condition ? expr_true : expr_false);
expr_true和expr_false必须有一个公共类型(这将是三元运算符的结果)。 此外,当然, break
不是一种表达,它是一种表述。