首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算子的结合性

问算子的结合性
EN

Stack Overflow用户
提问于 2015-12-14 13:10:50
回答 1查看 440关注 0票数 1

在C#规范中说:

除了赋值操作符和空合并运算符之外,所有二进制运算符都是左关联的,这意味着操作是从左到右执行的。 赋值运算符、空合并运算符和条件运算符(?:)是右关联的,这意味着操作是从右到左执行的。

这很清楚,但是像default,delegate,stackalloc,await这样的运营商是如何分类的呢?他们的联想是什么?

对于[],(),例如,它们是一元的还是二进制的,或者从技术上说它们都不是,因为根据标准一元运算符是类似op的,而二进制运算符是类似x op y的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 13:15:33

这里没有问题,因为所有非主一元运算符都具有相同的优先级,并且与所有二进制运算符具有不同的优先级。当一个操作数位于两个具有相同优先级的运算符之间时,结合性就会生效,但是一个操作数不能是两个非主一元运算符之间的关联。

所有主要的一元运算符(new、typeof、default、checked、unchecked和delegate)都有语法规则,这意味着它们没有问题--基本上,您可以通过括号/大括号的位置告诉操作数。如果没有括号,可能会出现问题。例如,假设unchecked运算符不需要括号。然后是这个:

代码语言:javascript
复制
unchecked x . y

可能意味着没有更多规则的unchecked(x.y)或(unchecked x).y。不过,这不是问题,因为它无论如何都是无效的。

值得注意的是,规范中的优先级和联想性解释实际上只是说明性的--精确的规则已经被编码在语言的语法中了。换句话说,该部分可以从规范中删除,而不会影响任何程序的有效性或意义。(工作也不错,因为有几个错误,IIRC.)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34267944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档