为什么加法输出始终为0?

时间:2020-03-30 00:20:55

标签: c++ c++17

#include <iostream>
int getValueFromUser()
{
    std::cout << "Enter An Integer !" << '\n';
    int valueTyped{};
    std::cin >> valueTyped;
    return valueTyped;
}
void _double(int valueToBeMultiplied)
{
    std::cout << "Doubled Is :"<<'\n' << valueToBeMultiplied * 2 << '\n';
}
void add(int x, int y)
{
    std::cout << "=" << x + y;
}
int typeInteger(int x)
{
    std::cout << "Enter Your Number" << '\n' << '\n';
    std::cin >> x;
    return x;
}
int main()
{
    _double(getValueFromUser()); // Use the () double on the return value of the getValueFromUser()
    int a{}, b{};
    std::cout << "To Add Two Numbers :" <<'\n';
    typeInteger(a);
    typeInteger(b);
    add(a , b);
    return 0;
}

相乘效果很好,但无论我键入什么数字,加法始终显示0。 为什么会发生?我该如何解决?

3 个答案:

答案 0 :(得分:2)

typeInteger()定义不适合获取该值。 从typeInteger()返回后,应将值保存到a,b变量中。 请参考这个。

int getInputValue(){
    int x;
    std::cout << "Enter Your Number" << '\n' << '\n';
    std::cin >> x;
    return x;
}

a = getInputValue();
b = getInputValue();
add(a , b);

答案 1 :(得分:1)

您假设通过修改提供给typeInteger()的输入变量,您也在a中更改了bmain()。那不是真的。

您正在按值传递这些变量。如果要修改它们,则必须通过指针或引用传递它们。

可以通过将int typeInteger(int x)更改为int typeInteger(int &x)来实现预期的行为。

答案 2 :(得分:0)

为什么加法输出总是为0?

因为您总是将零作为参数传递:

int a{}, b{}; // <-- zero initialisation
...
add(a , b);   // <-- zeroes passed here

要解决此问题,请传递零以外的值。