我的问题是,当我在我的C ++程序中输入一个值(通过cin)时,它会给我一个调试错误并说“运行时检查失败#3 - 正在使用变量'结果'而不进行初始化。” 'result'是一个int,并用1初始化,但仍然给我这个,不像其他人的问题。
int multiplication(int x, int y, int result)
{
result = 1;
result = x * y;
return result;
}
int main() //Declares the "main" function, which is mandatory.
{
int result = 0;
char operation;
int x;
int y;
std::cout << "Enter your first number: ";
std::cin >> x;
std::cout << "Enter your second number: ";
std::cin >> y;
std::cout << "Enter your operation (+, -, *, /): ";
std::cin >> operation;
if (operation == '*');
{
int result = multiplication(x, y, result);
}
std::cout << "The answer is: " << result << std::endl;
return 0; //Ends the process with 0x0.
}
答案 0 :(得分:3)
您有两个不同的 result
变量。
在main
的顶部有一个
int result = 0;
已初始化。
但在if语句中的行
int result = multiplication(x, y, result);
创建一个新变量,也称为result
,然后将其传递给函数。显然,必须在之前执行函数调用为变量赋予函数返回的值。
可能你不想要这个新变量,但是使用在函数顶部声明的变量。你通过使它成为一个赋值而不是一个新的声明来做到这一点:
if (operation == '*');
{
result = multiplication(x, y, result);
}
答案 1 :(得分:0)
两件事。
您使用的是两种不同的结果。
AvroIO.sink()
您需要更改为:
int result = 0;
int result = multiplication(x, y, result);
为什么需要通过参数传递结果?你可以这样做:
result = multiplication(x, y, result);
在这种情况下,在主要内部,由此改变:
int multiplication(int x, int y) { return x * y; }