6

可能重复:
如何使用条件运算符?

我是 C 语言的新手,在我正在查看的示例代码之一中,我遇到了以下声明:

A = A ? B: C[0]

我只是想知道上一条语句的任务是什么,执行上述语句后的结果是什么。

4

6 回答 6

14

它被称为三元运算符。如果为真,则expr ? a : b返回,如果为假。可以是布尔表达式(例如)、布尔文字/变量或任何可转换为布尔值的东西(例如 int)。aexprbexprx > 3

int ret = expr ? a : b等效于以下内容:

int ret;
if (expr) ret = a;
else ret = b;

三元运算符的好处是它是一个表达式,而上面是语句,您可以嵌套表达式但不能嵌套语句。所以你可以做类似的事情ret = (expr ? a : b) > 0;

作为一个额外的花絮,Python >=2.6 的等效操作语法略有不同:a if expr else b.

于 2010-11-25T11:16:54.043 回答
4

它分配给if为 trueA的值,否则。BAC[0]

?:

于 2010-11-25T11:15:22.373 回答
3

result = a > b ? x : y;与此块相同:

if (a > b) {
  result = x;
}
else
{
  result = y;
}
于 2010-11-25T11:17:44.307 回答
3

这与if else声明相同。

它可以重写为:

if ( A != 0 )
{
    A = B;
}
else
{
    A = C[ 0 ];
}
于 2010-11-25T11:18:33.540 回答
1

如果 A 存在(非 NULL),则 A 被分配给 B,否则为 C[0]。

于 2010-11-25T11:16:34.763 回答
1

如果 A 等于 0 则 A = C[0] 否则 A = B

于 2010-11-25T11:19:33.627 回答