Yet Another Conditional Operator Nesting Question

若如初见. 提交于 2019-11-30 20:27:43
interjay

The example you gave could only be interpreted in one way (like the if statements you gave), whether the ternary operator had right-to-left or left-to-right associativity.

Where the right-to-left associativity matters is when you have:

x = a ? b : c ? d : e;

Which is interpreted as: x = a ? b : (c ? d : e), not as x = (a ? b : c) ? d : e.

To give a more realistic example:

int getSign(int x) {
    return x < 0 ? -1 :
           x > 0 ?  1 :
                    0;
}

This is identical to the (probably more readable) if / else-if statements:

int getSign(int x) {
    if (x < 0)
         return -1;
    else if (x > 0)
         return 1;
    else return 0;
}
Ray

Your assumption is correct; however, it is often wise to add in parentheses for readability, e.g.:

x ? ( y ? z : u ) : v
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!