c++ - 如何正确使用三元运算符

标签 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;
}

最佳答案

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

<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/

相关文章:

c++ - 链接@_Znam 和@_Znwm

c++ - 如果使用#define 没有任何赋值,它会做什么?

php - 使用 PHP 检查 CSS 样式表是否对 if/else 语句有效

c++ - 无法分配给重载的取消引用 (*) 运算符

c++ - 模板类重载赋值运算符自赋值测试VC++ Express 2010报错

c++ - 有什么方法可以在范围内重用标识符?

c++ - 为什么我的 pnpoly C++ 实现总是返回 true?

c# - 检测到无法访问的代码,if 语句中的变量

java - Java 中许多 if-else 语句的性能不佳

c++ - 如何定义一些可以从 (+) 运算符的运算符重载范围内访问的函数?