为什么infix运算符不起作用?

时间:2019-04-02 06:32:54

标签: swift

我的电源中缀运算符不起作用。它增加或减少。


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

1 个答案:

答案 0 :(得分:6)

^已被定义为整数操作数的“按位XOR”运算符,这就是9 ^ 2的计算结果:

9 ^ 2 = 0b1001 ^ 0b0010 = 0b1011 = 11 

(有关位运算符的更多信息,请参见Advanced Operators。)

您为 double 操作数定义了一个运算符,并且如果您实际使用Double值来调用它,该运算符将按预期工作:

print(9.0 ^ 2.0) // 81