#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。 为什么会发生?我该如何解决?
答案 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
中更改了b
和main()
。那不是真的。
您正在按值传递这些变量。如果要修改它们,则必须通过指针或引用传递它们。
可以通过将int typeInteger(int x)
更改为int typeInteger(int &x)
来实现预期的行为。
答案 2 :(得分:0)
为什么加法输出总是为0?
因为您总是将零作为参数传递:
int a{}, b{}; // <-- zero initialisation
...
add(a , b); // <-- zeroes passed here
要解决此问题,请传递零以外的值。