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