操作员优先快速解决问题

时间:2018-12-07 10:14:59

标签: swift operators operator-precedence

已更新

表达式:a ?? 0 + b,其中aCGFloat?bCGFloata != nil

具体示例:

//a == 99
//b == 253
let t = ((a ?? 0) + b)
let t2 = (a ?? 0 + b)
//t == 352
//t2 == 99

如果仅设置方括号,为什么结果正确:(a ?? 0) + b

1 个答案:

答案 0 :(得分:2)

两个结果都是“正确的”。它们可以有所不同,因为+的优先级高于??。特别是如果a != nil

 t  == (a ?? 0) + b == a! + b
 t2 == (a ?? 0 + b) == a ?? (0 + b) == a!

可以在Operator Declarations上找到运算符优先级的完整列表。