Swift语言问题
大家好,我是编程新手,所以感谢您的耐心等待。我目前正在通过各种平台学习。以下是我说得对的问题,但我不明白为什么。
如果你能向我解释答案,我将不胜感激。
" c"是什么价值?
var a = 3
let b = a++
let c = -b
答案是-3,但我不知道为什么。我所知道的重要性在于b和c之间的区别是不可变的和可变的。
a **是一个增量器(相当于+ = 1)所以我原以为答案是-1?
答案 0 :(得分:1)
注意: 该代码仅在Swift 3之前,在Swift 2及更低版本中有效,因此这更像是对算法的讨论。
您有以下代码:
var a = 3
let b = a++
let c = -b
让我们逐行采取行动:
var a = 3
这声明了变量a
并将其初始化为3
。 a
的当前值为3
。然后:
let b = a++
这会将b
的值设置为a
的初始(当前)值,即3
,并使用后增量运算符++
来增加值a
后b
的值3
设置为a
。因此4
现在等于b
,但3
仍为let c = -b
。
c
-b
已声明并初始化为b
,3
目前为c
,因此-3
变为var a = 3
let b = a; a += 1
c = -b
。
话虽如此,您的代码相当于:
{{1}}
答案 1 :(得分:0)
首先,代码在Swift 3.0中再次起作用
第一个语句var a = 3
中的使得a = 3的值。
在第二个语句let b = a++
中,您实际上并没有增加自其后增量运算符以来的值。因此b的值仍为3。
在第三个陈述中,let c = -b
只是使c = -3。