我遇到的问题是当我编译我的代码时,我得到一个错误(未初始化的局部变量“ optionNumber used”
为此,我正在Macbook上使用Visual Studio 2017。
这是我的代码:
#include "pch.h"
#include <iostream>
int runMenu(int optionNumber) {
std::cout << "Choose an option \n";
std::cout << "1) Create Array \n";
std::cout << "2) View Array \n";
std::cout << "3) Add/Delete Values \n";
std::cin >> optionNumber;
return(optionNumber);
};
int main()
{
int optionNumber;
int optionNum;
optionNum = runMenu(optionNumber);
std::cout << optionNum;
return(0);
}
答案 0 :(得分:4)
int main() { int optionNumber; ^^^^^^^^^^^^^^^^
在这里,您已经声明了局部变量。您尚未提供初始化程序。因此,局部整数具有不确定的值。如果您读取一个不确定的值,则程序的行为将是不确定的。
optionNum = runMenu(optionNumber); ^^^^^^^^^^^^
在这里,您将值不确定的变量复制到参数中。因此,程序的行为是不确定的。幸运的是,您的编译器注意到了此错误,并发出了警告。
最简单的解决方案:初始化变量:
int optionNumber = 42;
另一方面,您可能需要考虑一下自己写的东西。传递给函数runMenu
的值永远不会在函数中使用。传递的任何值都将被从标准输入中提取的任何值覆盖。该论点是完全没有意义的。您可以将输入读取到局部变量中,而不用使用参数:
int runMenu() {
// your std::cout stuff
int optionNumber;
std::cin >> optionNumber;