该变量正在使用而未初始化(C ++,其他解决方案不起作用)

时间:2017-12-08 01:50:23

标签: c++

我的问题是,当我在我的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.
}

2 个答案:

答案 0 :(得分:3)

您有两个不同的 result变量。

main的顶部有一个

int result = 0;

已初始化。

但在if语句中的行

int result = multiplication(x, y, result);

创建一个新变量,也称为result,然后将其传递给函数。显然,必须在之前执行函数调用为变量赋予函数返回的值。

可能你不想要这个新变量,但是使用在函数顶部声明的变量。你通过使它成为一个赋值而不是一个新的声明来做到这一点:

if (operation == '*');
{
    result = multiplication(x, y, result);
}

答案 1 :(得分:0)

两件事。

  1. 您使用的是两种不同的结果。

    AvroIO.sink()

    您需要更改为:

    int result = 0;
    int result = multiplication(x, y, result);
    
  2. 为什么需要通过参数传递结果?你可以这样做:

    result = multiplication(x, y, result);
    

    在这种情况下,在主要内部,由此改变:

    int multiplication(int x, int y) { return x * y; }