可能重复:
如何使用条件运算符?
我是 C 语言的新手,在我正在查看的示例代码之一中,我遇到了以下声明:
A = A ? B: C[0]
我只是想知道上一条语句的任务是什么,执行上述语句后的结果是什么。
可能重复:
如何使用条件运算符?
我是 C 语言的新手,在我正在查看的示例代码之一中,我遇到了以下声明:
A = A ? B: C[0]
我只是想知道上一条语句的任务是什么,执行上述语句后的结果是什么。
它被称为三元运算符。如果为真,则expr ? a : b
返回,如果为假。可以是布尔表达式(例如)、布尔文字/变量或任何可转换为布尔值的东西(例如 int)。a
expr
b
expr
x > 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
.
它分配给if为 trueA
的值,否则。B
A
C[0]
result = a > b ? x : y;
与此块相同:
if (a > b) {
result = x;
}
else
{
result = y;
}
这与if else
声明相同。
它可以重写为:
if ( A != 0 )
{
A = B;
}
else
{
A = C[ 0 ];
}
如果 A 存在(非 NULL),则 A 被分配给 B,否则为 C[0]。
如果 A 等于 0 则 A = C[0] 否则 A = B