在for循环中,我们使用 let time = lastPostTimestamp
let datum = Date(timeIntervalSince1970: time as! TimeInterval)
let seconds = Date().timeIntervalSince(datum as Date)
guard seconds > 300 else {return} // 5 minutes
button.isEnabled = true
,这意味着在循环开始执行之前++i
递增到i
。我在这里弄错了什么?
以下是代码:
1
答案 0 :(得分:5)
for循环语法由三个语句组成。第三个("更新步骤")在循环体结束时执行。所以在第一次迭代中,我是零。
表达式
for(init_stmt; cond_expr; update_stmt)
body_stmt;
将导致代码大致相当于以下内容:
{
init_stmt;
while(cond_expr) {
body_stmt;
update_stmt;
}
}
答案 1 :(得分:1)
我担心你错了:在for
陈述的增量表达的上下文中,++i
,i++
,i += 1
和{{1都具有相同的效果。此外,此递增表达式在每次迭代后执行一次,然后再评估条件,而不是在第一次迭代之前执行。以下是i = i + 1
语句评估的步骤:
for
; i = 0
语句,则退出循环break
语句直接分支到步骤4; continue
; 最后一个语句正确使用++i
。 str2[i] = '\0';
循环末尾的i
值是第一个未通过条件的值,for
的值为{em> length str1[i] == '\0'
中的C字符串。这是您要在str1
中存储空终止符的索引。
请注意,代码可以简化并以这种方式更安全:
str2
答案 2 :(得分:1)
你的前提是错的。在循环开始之前,i
不会递增到1。
for (initialization_statement; conditional_statement; update_statement) {
body_of_for_loop
}
for
循环的工作方式是执行初始化语句,然后检查条件语句是否为true
。如果条件语句是true
,则执行for
循环的主体。执行for
循环的主体后,将执行update语句,然后再次评估条件语句,依此类推。
答案 3 :(得分:0)