斯威夫特:为什么这个Swift Challenge -3的答案是?
Swift语言问题斯威夫特:为什么这个Swift Challenge -3的答案是?
嗨,大家好,我是编程新手,所以感谢您的耐心。我目前正在通过各种平台进行学习。下面是一个我很对的问题,但我不明白为什么。
如果你能解释我的答案,我将不胜感激任何人的帮助。
“c”的值是什么?
var a = 3
let b = a++
let c = -b
答案是-3,但我不知道为什么。我知道的意义在于b和c之间的区别是不可变的,而且是可变的。
a **是一个增量(相当于+ = 1),所以我会认为答案是-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
什么是晶圆厂的答案,非常感谢。 – rb2030
@ rb2030不客气! –
首先代码不会在雨燕3.0
了工作在第一条语句var a = 3
使得A = 3 值在第二条语句let b = a++
你实际上并没有增加,因为它的后递增操作的价值。因此b的值仍然为3. 在第三种说法中,let c = -b
只是使c = -3。
非常完美的感觉,谢谢。 – rb2030
代码不斯威夫特卡伦特3再编译,'--'和''++已被删除。 –