我使用Swift2
和我有这两个循环:为什么我++和++我在swift2中产生相同的结果?
for var i: Int = 0; i < 4; i++ {
print("the i = \(i)")
}
and
for var i: Int = 0; i < 4; ++i {
print("the i = \(i)")
}
我得到了完全相同的打印他们两个。告诉我为什么?
我使用Swift2
和我有这两个循环:为什么我++和++我在swift2中产生相同的结果?
for var i: Int = 0; i < 4; i++ {
print("the i = \(i)")
}
and
for var i: Int = 0; i < 4; ++i {
print("the i = \(i)")
}
我得到了完全相同的打印他们两个。告诉我为什么?
i++
和++i
在这种情况下做同样的事情;增加i
一个。它们之间的区别在于它们返回不同的值,在循环中无关紧要,因为“增量”部分的返回值将被忽略。
i++
(称为“后递增”)返回它被递增之前的i
值,而++i
(称为“预递增”)返回它被递增的i
后的值。例如:
var i = 1
print(i++) // Prints 1, i is now 2
print(++i) // Prints 3, i is now 3
传统上,预增(++i
)是稍快,因为它没有增加它时,它返回的值后要记得的i
于前值,但我怀疑有任何现代编译器的差异。
根据Swift Manual的for
语句的语法是:
for initialization; condition; increment {
statements
}
和发生的事情是,如果条件为真,那么statements
将被执行,不是递增这就是为什么你有同样的结果
请仔细阅读本:
for语句A是EXE cuted如下:
初始化仅评估一次。它通常用于声明和初始化循环剩余部分所需的任何变量。
评估条件表达式。 如果为真,程序执行语句,并继续执行步骤
- 如果为假,程序不执行语句或增量表达,并且程序完成了对语句执行。 增量表达式,并且执行过程返回到步骤2。
++ i和i ++是表达式由一个意思增量i相同,但++表达式而我使用之前我装置中进行上述增量++指使用后执行增量。
在for循环中,增量表达式的评估发生在块中的代码执行后,因此在您的示例中,它与您使用的代码无关。
要看到差距,尝试这些:
var j: Int = 0
for var i: Int = 0; i < 4; i++ {
print("the i = \(i) the j = \(j++)")
}
和
var j: Int = 0
for var i: Int = 0; i < 4; ++i {
print("the i = \(i) the j = \(++j)")
}
http://stackoverflow.com/questions/484462/difference-between-i-and-i-in-一个循环 –