提问者:小点点

将向量数组转换为数字


我在C++中创建了一个将数字转换为数组的函数。由于这一创建,我还创建了将数组转换回数字的相反部分:

int convertToNumber(vector<int> nums) {

    int length{ nums.size() };
    int Pow{ length - 1 };
    int factor{ pow(10, Pow) };
    int tempNum{};
    int result_num{};

    for (auto n : nums) {

        tempNum = n;
        tempNum *= factor;
        result_num += tempNum;
        Pow--;

    }

    return result_num;
}

问题就在这里。当我在main中使用以下代码运行时:

int main() {

  vector<int> nums {2, 3, 5, 6, 2, 6};

  int number = convertToNumber(nums);

  cout << number << endl;

}

我得到了240000,而我应该得到235626。我找了很久都找不到代码中的逻辑错误。有人知道怎么回事吗?


共1个答案

匿名用户

在循环的每次迭代中,您都在更新pow-但不更新factor;循环中使用的是factor,而不是pow

请记住,当您将表达式赋给变量时,该表达式只求一次值,而这一次求值的结果就是变量所设置的值。换句话说,每次使用factor时,不会调用pow()函数;它只调用一次,初始值为pow

注意您提供的代码将无法编译。必须在诸如vectorpow等标识符之前指定名称空间-否则编译器将无法理解它们;并且还需要包含适当的头。

如果碰巧在程序的某个地方隐藏了一个使用名称空间std的-那么,不要使用它:

为什么“使用命名空间std;”被认为是不好的做法?