This question already has an answer here:
Corrupted stack/heap under debugger when simulating?
(1个答案)
5年前关闭。
我看过Swift规范,它说
逻辑AND运算符(
这两个值都必须为true,以使整体表达式也为true。
如果任何一个值为false,则整个表达式也将为false。实际上,如果第一个值是false,则第二个值甚至都不会被求值,因为它不可能使整个表达式等于true。这称为短路评估。
本示例考虑两个布尔值,并且仅在两个值都为true时才允许访问:
它与这个问题无关,这是一个错误吗?
(1个答案)
5年前关闭。
我看过Swift规范,它说
逻辑AND运算符(
a && b
)创建逻辑表达式,其中这两个值都必须为true,以使整体表达式也为true。
如果任何一个值为false,则整个表达式也将为false。实际上,如果第一个值是false,则第二个值甚至都不会被求值,因为它不可能使整个表达式等于true。这称为短路评估。
本示例考虑两个布尔值,并且仅在两个值都为true时才允许访问:
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
println("Welcome!")
} else {
println("ACCESS DENIED")
}
// prints "ACCESS DENIED"
它与这个问题无关,这是一个错误吗?
最佳答案
您可能在实际被评估之前就达到了断点(至少您的屏幕截图显示了这一点)。再往前走一步,您会看到c
像预期的那样变成了false
。
在此时间点,c
仅指向内存中的随机位置,调试器恰好将其解释为16
。