在swift中,为什么true && false = 16?

JIE*_*ANG 2 debugging xcode ios swift

当我执行代码时,c = 16,为什么?

它说,我已经看过Swift规范了

逻辑AND运算符(a && b)创建逻辑表达式,其中两个值必须为true,整个表达式也为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"
Run Code Online (Sandbox Code Playgroud)

它没有关于这个问题,这是一个错误吗?

nbu*_*urk 5

您可能在实际评估此行之前点击了断点(至少您的屏幕截图显示了这一点).再向前走一步,你会看到c变得false如预期的那样.

此时,c仅指向内存中随机位置,恰好16由调试器解释.