답변
대부분의 C 계열 언어와 마찬가지로, 하나도 없습니다.
하나가 아니지만 pow
기능이 있습니다.
이 운영자가 아니지만이 같은 펑 기능을 사용할 수 있습니다 :
return pow(num, power)
당신은, 당신은 또한 운영자 호출과 같이 펑 기능을 만들 수있는하려면 :
infix operator ** { associativity left precedence 170 }
func ** (num: Double, power: Double) -> Double{
return pow(num, power)
}
2.0**2.0 //4.0
을
내가 해냈어과 같이 :
operator infix ** { associativity left precedence 200 }
func ** (base: Double, power: Double) -> Double {
return exp(log(base) * power)
}
일부 전원에 2를 제기 할 일이 있다면, 당신은 비트 왼쪽 시프트 연산자를 사용할 수 :
let x = 2 << 0 // 2
let y = 2 << 1 // 4
let z = 2 << 7 // 256
'power'값이 1보다 적을 수 있습니다.
이 값은 pow(2.0, 8.0)
보다 빠르며 두 배 사용을 피할 수 있습니다. **
중위 연산자의 스위프트 3 버전을 찾고있는 사람들을위한
이것은 가능한 한 훌륭하지만 질문에 실제로 대답하지 않습니다. – Chris
나는 2의 힘에 관심이 있었기 때문에 그것은 나를 위해 대답했다. – dldnh
@chanceoperation 또는 2의 n 승을 위해 1 또는 0b00000001을 n 개의 자리로 왼쪽으로 이동할 수 있습니다. [Swift Advanced Operators] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual /Swift_Programming_Language/AdvancedOperators.html) '하게 X = 0b00000001 지수 << // 2 ** 지수 하자 X = 1 << // 0 1 X = 1 << 2 // 4 가합시다 X = 1 << 8 // 256' – beepscore
: 당신의 int에 그것을 사용하고 XOR과 충돌 할 수 **`, 그래서
precedencegroup ExponentiationPrecedence {
associativity: right
higherThan: MultiplicationPrecedence
}
infix operator ** : ExponentiationPrecedence
func ** (_ base: Double, _ exp: Double) -> Double {
return pow(base, exp)
}
func ** (_ base: Float, _ exp: Float) -> Float {
return pow(base, exp)
}
2.0 ** 3.0 ** 2.0 // 512
(2.0 ** 3.0) ** 2.0 // 64
니스. 'pow '을 얻기 위해'다윈'을 가져 오는 것을 잊지 마세요. – iainH
확실히 결합 성을 남겨 두어야합니다. 2^3^2는 512가 아니라 64입니다. – brandonscript
더 나은는'사용하기. – Kevin
^연산자는 Swift에서 XOR로 정의됩니다. –
경고! 여기에 문제가 있습니다. 예를 들어, 보통 프로그래밍 언어에서는'-2.0 ** 2.0 = - (2.0 ** 2.0) = -4.0'입니다. 그러나, 여기'-2.0 ** 2.0 = (-2.0) ** 2.0 = 4.0'이 의도 된 용도가 아니며 버그를 추적하기 힘들고 어렵게 만들 수 있습니다. –