我看过Swift规范,它说
逻辑AND运算符(
a && b
)创建逻辑表达式 两个值必须为true才能使整个表达式也为真。
如果任一值为false,则整个表达式也将为false。实际上,如果第一个值为false,则甚至不会计算第二个值,因为它不可能使整个表达式等于true。这被称为短路评估。
此示例考虑两个Bool值,并且只有两个值都为true时才允许访问:
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
println("Welcome!")
} else {
println("ACCESS DENIED")
}
// prints "ACCESS DENIED"
它没有关于这个问题,这是一个错误吗?
答案 0 :(得分:5)
你可能会在之前点击断点实际评估此行(至少你的截图是这样的)。再往前走一步,您会看到c
成为false
,符合预期。
此时,c
仅指向内存中的随机位置,调试器恰好将其解释为16
。
答案 1 :(得分:4)