如何正确使用三元运算符

时间:2014-05-01 20:24:12

标签: c++ if-statement operator-keyword ternary

鉴于以下两个陈述,有人可以帮助我只使用三元运算符而不是if语句吗?

我已经做了很多努力:

if(strstr(cv[i],a.c_str()))
{
    o=1;
    p=cv[i];
    p=p.substr(a.size()+1);
}
else o+=4;

if (b^*s && c++ + 1 ^ *s)
{
    cout << b;
    if (b^--c)
        cout << (c - b>1 ? "-" : ",") << c;

    if (a)
        cout << ",";
    b = c = *s;
}

1 个答案:

答案 0 :(得分:1)

三元运算符是一个表达式,在计算时返回一个值:

<result> = <condition> ? <when true> : <when false>

在此伪代码<when true>中,<when false>也必须是表达式。虽然您可以通过一些技巧将多个语句打包到单个表达式中(例如,使用do { <statements> } while(false);结构包含它),但三元运算符并不适用于此。当thenelse分支都由单个语句组成时,您应该使用三元运算符,并且可以选择使用表达式的返回值。

所以采取一个非常简单的例子,而不是写

if(x > 0)
  y += 10;
else
  y += 20;

使用三元运算符更简洁,更简单:

y += x > 0 ? 10 : 20;

然而,当条件分支包含多个语句时并非如此,因为在这种情况下使用三元运算符只会使您的代码看起来更混乱,更难理解。