c - 声明与?在 C

标签 c syntax ternary-operator

<分区>

Possible Duplicate:
How do I use the conditional operator?

我是 C 语言的新手,在我审查的示例代码之一中,我遇到了这样的陈述:

A = A ? B: C[0]

我只是想知道前面语句的任务是什么,执行上述语句后会得到什么结果。

最佳答案

它叫做 ternary operator . 表达式 ?如果 expr 为真,a : b 返回 a,如果为假,则返回 bexpr 可以是 bool 表达式(例如 x > 3)、 bool 文字/变量或任何可转换为 bool 值的东西(例如 int)。

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

关于c - 声明与?在 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276375/

相关文章:

ruby-on-rails - 为什么在 Ruby 中有时需要括号?

javascript - `class Popup extends DivOverlay<LeafletElement, Props>` 语法在 JavaScript 中意味着什么?

javascript - 如何以三元方式使用 insertAfter 和 insertBefore 代码转换 if block ?

cakephp - CakePHP 中的 "$form->..."和 "$this->Form->..."有什么区别?

java - 三元运算符的两个右 watch 达式都必须是兼容类型吗?

java三元运算符返回函数结果

c - 隐式参数转换

c - dup(file_des) 是否等同于 fcntl(filedes, F_DUPFD, 0)?

c - 错误 : expected ‘)’ before ‘;’ or '}' token

c++ - 有没有办法使用 visual studio 命令提示符进行调试?