整数变量的值被神秘地重新分配

时间:2014-07-01 15:29:46

标签: c++ integer unsigned

我得到了以下内容。方法foo:

template <typename II, typename OI>
    OI foo (II b, II e, int n, OI x) {
        // iterate
        int k;

        while (b != e) {
            ++b;
            ++k;
        }

        int iterations;
        iterations = k - n;

        cout << "k: " << k << endl; // output isn't 3, but some random large number
        cout << "n: " << n << endl; // output is 2
        cout << "k - n: " << 3 - 2 << endl; // output is 1
        cout << "k - n: " << iterations << endl; // output is 182741 or some random number

        return x;}

我的主要方法如下:

int main () {

    {
        const int a[] = {2, 3, 4};
        int x[10];
        foo(a, a+3, 2, x);
    }
}

我的问题是,在上面的代码中,我试图获取传入foo的数组中的元素数量,并且我能够通过k来实现。现在我希望能够从k中减去n(n = 2),这通常会导致1.

一旦我做了涉及k的任何减法,k就会被搞乱 - 它从3变为有符号的随机大数。我真的不知道为什么会这样。任何人都知道发生了什么?

1 个答案:

答案 0 :(得分:3)

您必须初始化k,例如:

int k = 0;