【发布时间】:2010-08-22 12:04:01
【问题描述】:
谁能解释一下它们之间的区别:
for(unsigned col = 0; col < n; ++col, num_to_fill >>= 1U)
{
for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
{
std::fill_n(&output[col][row], num_to_fill, 1);
}
}
和
for(unsigned col = 0; col < n; col++, num_to_fill >>= 1U)
{
for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
{
std::fill_n(&output[col][row], num_to_fill, 1);
}
}
当 col=0 时,在 ex.1 中 Output[col][row] 将是 output[1][row] 并且在 ex.2 Output[col][row] 中将是 output[0][row] 。我说的对吗?
问题 2:使用 >>= 1U 代替 /= 2 会有什么不同吗?
【问题讨论】:
-
如果我没记错的话,在这种情况下它没有任何区别。将变量用作
R-Value时确实会有所不同,如下所示:a = b++;或a = ++b; -
格雷格,这个问题的答案大多不正确。他们回答什么是后增量和预增量,不是它们如何在循环中工作 - 实际上,其中许多具有误导性,因为它们应用它确实会产生影响,因为它们在循环中使用了误导性语法(
int i = 0; foreach(randomOtherThing in randomOtherThings)...) -
好的。第二个问题呢?
-
@Stephen:这不是重复的问题。问题是这个问题以前被问过。如果他只有第二个问题,那么它就不会重复。
-
@0A0D 然而,给 OP 一个指向那个问题的链接,其中 wrong 答案被标记为正确的答案,是否足以提高他的理解?我认为 SO 是关于学习和帮助他人学习的。很可能有人可能会被链接的问题误导,认为 in the loop 之前或之后递增确实会影响循环内计数器的值。声称这是该特定问题的重复并不鼓励学习,它只是表明 SO 用户有时过于迂腐。