【发布时间】:2020-07-11 19:02:39
【问题描述】:
根据cppreference.com,C++中for循环的更新表达式或迭代表达式语言可以
任何表达式,在循环的每次迭代之后和重新评估条件之前执行。
因此,我认为以下 for 循环是正确的:
//initializations
Point cursor;
cursor.y = minR * pixelSpacing.y + origin.y;
for (int r = minR; r <= maxR; r++, cursor.y += pixelSpacing.y, cursor.x = minC * pixelSpacing.x + origin.x)
{
//loop statements
}
但是,我在循环结束时获得的结果与使用以下代码获得的结果不同:
//initializations
Point cursor;
cursor.y = minR * pixelSpacing.y + origin.y;
for (int r = minR; r <= maxR; r++, cursor.y += pixelSpacing.y)
{
cursor.x = minC * pixelSpacing.x + origin.x;
//loop statements
}
因此在for循环的更新表达式中使用赋值表达式是无效的吗?
【问题讨论】:
-
我的意思是 C++,对不起。
-
除了语句执行的顺序——在循环体之后或之前,这两个示例没有区别。如果循环中的任何内容都依赖于这些变量,那么顺序当然很重要。
-
什么是“循环语句”?他们是否随时查找
cursor.x?还是更新因素之一?如果您查看参考,您会发现它与在循环语句之后 (而不是之前)执行它相同。此外,如果您在循环语句中的任何位置都有continue命令,它的行为可能与循环结束时的另一个语句不同。是这样吗? -
在第一个例子中,赋值是在你的循环语句之后执行的
标签: c++ for-loop iteration variable-assignment