[英]Assignment expression in C++ for-loop update expression
根据cppreference.com , C++语言中for循环的更新表达式或迭代表达式可以是
任何表达式,在循环的每次迭代之后和重新评估条件之前执行。
因此,我认为以下 for cycle 是正确的:
//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循环的更新表达式中使用赋值表达式是否无效?
这个
for (int r=minR; r<=maxR; r++, cursor.y += pixelSpacing.y, cursor.x = minC * pixelSpacing.x + origin.x)
相当于:
for (int r=minR; r<=maxR; /* nothing here */)
{
/* loop body here */
r++;
cursor.y += pixelSpacing.y;
cursor.x = minC * pixelSpacing.x + origin.x;
}
因此,唯一的区别是执行各种语句的顺序。 请注意,逗号运算符从左到右计算,其中最左边的操作数保证首先执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.