2017-05-04 124 views

回答

6

存在一个细微的差异,使用明确的位清除运算符可以更轻松地处理文字和非类型常量。

无类型整数的默认类型为int,因此像a := uint32(1) & ^1这样的内容是非法的,因为^ 1首先被计算并且被评估为^ int(1),即等于-2。 a := uint32(1) &^ 1是合法的,但因为这里1基于上下文被评估为uint32。

明确表明一点可能会有一些性能上的提升,但我对此不太确定。

+2

至少在amd64上,它们编译到相同的机器代码,所以没有性能差异。 – JimB

+0

JimB,我假定你的意思是,如果你做一切签署ints? –

相关问题