我得到了以下内容。方法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变为有符号的随机大数。我真的不知道为什么会这样。任何人都知道发生了什么?
答案 0 :(得分:3)
您必须初始化k
,例如:
int k = 0;