我个人是三元运算符的拥护者:()?:; 我确实意识到它有它的位置,但我遇到了许多完全反对使用它的程序员,而且有些人经常使用它.
你有什么感受?你看到了什么有趣的代码?
我可以理解为什么赋值运算符是正确关联的.什么时候才有意义
x = 4 + 3
Run Code Online (Sandbox Code Playgroud)
评估,在分配给x之前添加4和3.
我不清楚如何?:从正确的联想中获益.只有两个?:人像这样使用才有意义
z = (a == b ? a : b ? c : d);
Run Code Online (Sandbox Code Playgroud)
然后它被评估如下:
z = (a == b ? a : (b ? c : d));
Run Code Online (Sandbox Code Playgroud)
从左到右进行评估肯定会更有意义吗?
根据C优先级表,三元条件运算符具有从右到左的关联性.
那么,它是否可以直接转换为等效的if-else阶梯?
例如,可以:
x?y?z:u:v;
Run Code Online (Sandbox Code Playgroud)
被解释为:
if(x)
{
if(y)
{ z; }
else
{ u; }
}
else
{ v; }
Run Code Online (Sandbox Code Playgroud)
通过匹配else(:)与最近的未配对if(?)?或者从右到左的关联性是否意味着其他一些安排?