鉴于以下两个陈述,有人可以帮助我只使用三元运算符而不是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;
}
答案 0 :(得分:1)
三元运算符是一个表达式,在计算时返回一个值:
<result> = <condition> ? <when true> : <when false>
在此伪代码<when true>
中,<when false>
也必须是表达式。虽然您可以通过一些技巧将多个语句打包到单个表达式中(例如,使用do { <statements> } while(false);
结构包含它),但三元运算符并不适用于此。当then
和else
分支都由单个语句组成时,您应该使用三元运算符,并且可以选择使用表达式的返回值。
所以采取一个非常简单的例子,而不是写
if(x > 0)
y += 10;
else
y += 20;
使用三元运算符更简洁,更简单:
y += x > 0 ? 10 : 20;
然而,当条件分支包含多个语句时并非如此,因为在这种情况下使用三元运算符只会使您的代码看起来更混乱,更难理解。