忽略循环中的变量赋值,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.

你能解释一下为什么会这样吗?谢谢!

在您的第一个示例中,变量 ab 未更新并且未初始化或正在使用先前在循环外初始化的值。

在第二种情况下,赋值与初始种子值相互依赖,变量 ab 逐渐更新。