<分区>
Possible Duplicate:
How do I use the conditional operator?
我是 C 语言的新手,在我审查的示例代码之一中,我遇到了这样的陈述:
A = A ? B: C[0]
我只是想知道前面语句的任务是什么,执行上述语句后会得到什么结果。
<分区>
Possible Duplicate:
How do I use the conditional operator?
我是 C 语言的新手,在我审查的示例代码之一中,我遇到了这样的陈述:
A = A ? B: C[0]
我只是想知道前面语句的任务是什么,执行上述语句后会得到什么结果。
最佳答案
它叫做 ternary operator . 表达式 ?如果
返回 expr
为真,a : ba
,如果为假,则返回 b
。 expr
可以是 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 达式都必须是兼容类型吗?
c - dup(file_des) 是否等同于 fcntl(filedes, F_DUPFD, 0)?