在一本书中,我看到了三元运算符用法的模糊(对我而言):
int nr = nr ? : 1; /* allowed shortcut, same as "nr ? nr : 1" */
究竟是什么意思?在代码的某处,'nr'变量被声明,它的初始值是基于比较结果,'nr'(其中有一个垃圾,我猜O_o)不等于零...如果是这样的话会得到什么价值?
答案 0 :(得分:2)
这是ternaray运算符的扩展,允许省略第二个操作数,如注释中所述。
此:
int nr = nr ? : 1;
相当于:
int nr = nr ? nr : 1;
我认为这是GCC特定的扩展,here's GCC扩展页面。
正如其他人在评论中指出的那样,由于nr
被声明并且它的值在声明中使用,因此该行的结果是不可预测的。