忽略循环中的变量赋值,c ++

时间:2015-04-06 08:27:49

标签: c++ loops variable-assignment

在我的工作中,我需要计算排列产品。我将排列存储在数组中,例如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.

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

1 个答案:

答案 0 :(得分:0)

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

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