我的电源中缀运算符不起作用。它增加或减少。
precedencegroup SquareSumOperatorPrecedence {
lowerThan: MultiplicationPrecedence
higherThan: AdditionPrecedence
associativity: left
assignment: false
}
infix operator ^: SquareSumOperatorPrecedence
func ^(lhs: Double, rhs: Double) -> Double {
return pow(lhs, rhs)
}
9 ^ 2// equals 81
//It gives me 11
我以为9 ^ 2会给我81,但它却给了我11
答案 0 :(得分:6)
^
已被定义为整数操作数的“按位XOR”运算符,这就是9 ^ 2
的计算结果:
9 ^ 2 = 0b1001 ^ 0b0010 = 0b1011 = 11
(有关位运算符的更多信息,请参见Advanced Operators。)
您为 double 操作数定义了一个运算符,并且如果您实际使用Double
值来调用它,该运算符将按预期工作:
print(9.0 ^ 2.0) // 81