【问题标题】:Is it possible to use another conditional expression inside a conditional expression?是否可以在条件表达式中使用另一个条件表达式?
【发布时间】:2017-03-20 10:17:44
【问题描述】:

我想知道 C 中的“?:”运算符。可以像这样在另一个条件运算符中使用条件运算符吗?

int a = 0;
a == 1?a += 1:a == 0?a += 2:a = 3;

这是一个非常糟糕的例子,但我希望你能理解我要问的问题。

【问题讨论】:

  • 我不会使用有副作用的三元...
  • @Jean-FrançoisFabre 在? 处有一个序列点。
  • 是的,您可以使用正确的括号
  • a = 3 --> (a = 3)
  • 是的,但是为什么,以这种方式使用三元语句只会混淆代码。

标签: c conditional-operator


【解决方案1】:

当然可以,像这样:

int a = 0;
a == 1?(a += 1):((a == 0)?(a += 2):(a = 3));

和写一样:

int a = 0;
if (a == 1)
    a += 1;
else
    if (a == 0)
        a += 2;
    else 
        a = 3;

这更容易阅读和理解。

【讨论】:

  • 确实@Jean-FrançoisFabre,用这个澄清编辑我的帖子。
【解决方案2】:

是的,但你必须像这样使用括号:

a == 1?a += 1:(a == 0?a += 2:a = 3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2023-01-31
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多