我一直在试图弄清楚,将赋值和复合赋值操作符链接在一起总是可以预测地从右到左工作吗?示例:
a = b += c
这是否总是被评估为
a = (b += c)
无论其他复合算子和算子的顺序如何,我都可以替代?
今天有好几次,我犹豫要把这些不同的操作人员连在一起,而不知道如何评估优先级。我所引用的来源通常是模棱两可的,因为它说,即使这些运算符具有相同的优先级级别,“在某一行上列出的运算符对其参数的约束将比在其下方的行上列出的任何运算符的约束更紧”--这表明,在上面的示例中,普通赋值运算符可能比复合赋值运算符对a
& b
“绑定得更紧密”。
发布于 2014-09-06 00:28:57
“在它下面的一行”并不是指+=
出现在=
下面的行上,而是指出现在它下面的行上的throw
和,
,其中一个表行由边框分隔。
假设a = b += c
、b
和c
都是有效表达式,那么a
、b
和c
可以表示除(a) = ((b) += (c))
之外的任何其他内容,唯一的方法是这些表达式中的任何一个都包含您链接到列表的优先级别15或更高级别的操作符。
这方面的一个例子是,如果b
实际上是d, e
:a = d, e += c
的意思自然是(a = d), (e += c)
,而不是a = ((d, e) += c
。
https://stackoverflow.com/questions/25695593
复制相似问题