1

可能重复:
为什么要使用三元运算符而不为“真”条件赋值(x = x ?: 1)

在一个人的书中,我看到了三元运算符用法的模糊(对我来说)语法:

int nr = nr ? : 1; /* allowed shortcut, same as "nr ? nr : 1" */

这究竟是什么意思?在代码中的某处声明了“nr”变量,它的初始值基于比较结果是否“nr”(其中有一个垃圾,我猜是 O_o)不等于零......如果是这样,那么它会得到什么价值?

4

1 回答 1

2

这是对三元数组的扩展,允许省略第二个操作数,如注释中所述。

这:

int nr = nr ? : 1;

相当于:

int nr = nr ? nr : 1;

我相信这是一个 GCC 特定的扩展,这里是它的 GCC 扩展页面。

正如其他人在评论中指出的那样,由于nr正在声明并且声明中使用了它的值,因此这一行的结果是不可预测的。

于 2012-10-11T21:08:40.250 回答