忽略循环中的变量赋值,C++
Ignoring variable assignment in loop, c++
在我的工作中,我需要计算排列乘积。我将排列存储在数组中,例如 int g[] = {0, 1, 2, 3, 4, 5, 6, 7};
。看起来这两个片段给出了不同的输出:
for (int r = 0; r < q; r++) {
myfile << endl << g[(H[a] + r) % q] << g[(H[b] + r) % q] << endl;
}
和
for (int r = 0; r < q; r++) {
a = g[(H[a] + r) % q];
b = g[(H[b] + r) % q];
myfile << endl << a << b << endl;
}
结果分别是:01
12
23
34
45
56
67
70 和
12
23
34
45
45
56
67
70.
在某些步骤中,变量分配不起作用。之前设置了所有变量,q等于8.
你能解释一下为什么会这样吗?谢谢!
在您的第一个示例中,变量 a
和 b
未更新并且未初始化或正在使用先前在循环外初始化的值。
在第二种情况下,赋值与初始种子值相互依赖,变量 a
和 b
逐渐更新。
在我的工作中,我需要计算排列乘积。我将排列存储在数组中,例如 int g[] = {0, 1, 2, 3, 4, 5, 6, 7};
。看起来这两个片段给出了不同的输出:
for (int r = 0; r < q; r++) {
myfile << endl << g[(H[a] + r) % q] << g[(H[b] + r) % q] << endl;
}
和
for (int r = 0; r < q; r++) {
a = g[(H[a] + r) % q];
b = g[(H[b] + r) % q];
myfile << endl << a << b << endl;
}
结果分别是:01 12 23 34 45 56 67 70 和 12 23 34 45 45 56 67 70. 在某些步骤中,变量分配不起作用。之前设置了所有变量,q等于8.
你能解释一下为什么会这样吗?谢谢!
在您的第一个示例中,变量 a
和 b
未更新并且未初始化或正在使用先前在循环外初始化的值。
在第二种情况下,赋值与初始种子值相互依赖,变量 a
和 b
逐渐更新。