鉴于以下两个语句,有人可以帮我只使用三元运算符而不是 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;
}
最佳答案
三元运算符是一个表达式,在计算时返回一个值:
<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;
然而,当条件分支包含多个语句时情况并非如此,因为在这种情况下使用三元运算符只会让您的代码看起来更加困惑和难以理解。
关于c++ - 如何正确使用三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23415957/