我可以理解为什么赋值运算符是右结合的。这是有道理的,当
x = 4 + 3
求值时,4 和 3 在分配给 x 之前相加。
我不清楚如何?:
将从右结合中受益。只有当两个人在一起时才重要吗?:
s 是这样使用的
z = (a == b ? a : b ? c : d);
那么它的评估是这样的:
z = (a == b ? a : (b ? c : d));
从左到右评估肯定更有意义吗?
如果从左到右计算,它看起来像这样:
z = ((a == b ? a : b) ? c : d);
也就是说,它将使用第一个条件的结果 (a
or b
) 作为第二个条件的布尔条件。这没有多大意义:这就像在说:
int z, tmp;
/* first conditional */
if(a == b) tmp = a;
else tmp = b;
/* second conditional */
if(tmp) z = c;
else z = d;
虽然也许有一天您会想要这样做,但更有可能的是,每个?:
接下来的内容旨在添加更多条件,例如if
/ else if
/ else if
/ else
,这就是右关联绑定产生的结果:
int z;
/* first conditional */
if(a == b) z = a;
else /* second conditional */ if(b) z = c;
else z = d;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)