声明?在C.

use*_*245 6 c syntax ternary-operator

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

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

A = A ? B: C[0]
Run Code Online (Sandbox Code Playgroud)

我只是想知道前一个语句的任务是什么,以及执行上述语句后的结果是什么.

mar*_*cog 13

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

int ret = expr ? a : b 相当于以下内容:

int ret;
if (expr) ret = a;
else ret = b;
Run Code Online (Sandbox Code Playgroud)

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

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