while(*p!='\0' && *q!='\0')
{
if(*p==*q)
{
p++;
q++;
c++;
}
else
break;
}
Run Code Online (Sandbox Code Playgroud)
我用三元运算符编写了这个,但为什么它给break语句提供错误?
*p==*q?p++,q++,c++:break;
Run Code Online (Sandbox Code Playgroud)
gcc编译器给出了这个错误:'break'之前的预期表达式
当你使用三元运算符时,它不像是一个if.三元运算符具有以下形式:
(condition ? expression_if_true : expression_if_false);
Run Code Online (Sandbox Code Playgroud)
这两个表达式必须具有相同的类型,否则会产生废话.
正如Thilo所说,你不能在这个运算符中使用语句,只能表达式.这是因为整个三元运算符本身必须是表达式,具体取决于条件.
语法是:
(condition ? expr_true : expr_false);
Run Code Online (Sandbox Code Playgroud)
expr_true和expr_false必须有一个共同的类型(这将是三元运算符的结果)。此外,当然,break它不是一个表达式,它是一个语句。