谈到C中运算符的关联性,我想知道为什么具有相同优先级的运算符之间存在差异关联性。例如,后缀增量和后缀减少有左关联性;而前缀增量和前缀减量具有正确的相关性。对于所有相同的优先级运算符,只有左或右关联性不是很简单吗?
背后有什么理由吗?
答案 0 :(得分:7)
对所有人来说,只有左右关联性是不是很简单 相同的优先运算符?
是和it is the case in C。 可能您认为前缀和后缀具有相同的优先级错误。 Postfix的优先级高于前缀!
还有一个奇怪的案例要考虑 为什么某些运营商具有某种关联性 。来自Wiki,
例如,在C中,赋值a = b是返回的表达式 具有副作用的值(即,b转换为a的类型) 将a设置为此值。可以在中间执行分配 一个表达。 (表达式可以通过表达式来表达 用分号跟着它;即a = b是表达式,但a = b; 是一个声明)。 =运算符的右关联性允许 诸如a = b = c的表达式被解释为a =(b = c), 从而将a和b都设置为c的值。替代方案(a = b)= c没有意义,因为a = b不是左值。
答案 1 :(得分:0)
二进制运算符都是左关联的,除了赋值运算符是右关联的。
后缀运算符有时(例如在K& R 2nd中)被称为右关联,但这是为了表达它们比一元运算符具有更高优先级的想法。