【问题标题】:Integer is uninitialized in VSCommunity2019,windows10Integer 在 VS Community 2019,windows 10 中未初始化
【发布时间】:2020-10-16 23:49:51
【问题描述】:

我正在用 C++ 制作一个计算器,除了有一个问题的阶乘之外,我已经完成了所有工作: 如果有帮助,我的 int 编号是“未初始化”,这是 windows10 上 vscommunity2019 上的控制台应用程序。除了阶乘之外,一切都很完美,当我测试它时,唯一的错误是 int 数。

#include <iostream>
using namespace std;
int main()

{
float n1;
char op;
float n2;
int co;
int i;
int fact = 1;
int number;
calculations: std::cout << "Enter n1!";
    std::cin >> n1;
    std::cout << "\nEnter operator! Here are your choices: + - * / !";
    std::cin >> op;
    std::cout << "\nEnter n2!";
    std::cin >> n2;
    switch (op)
    {
    case '+':
        std::cout << n1 + n2;
        break;
case '-':
    std::cout << n1 - n2;
    break;

case '*':
    std::cout << n1 * n2;
    break;

case '/':
    std::cout << n1 / n2;
    break;
case '!':
    for (i = 1; i <= number; i++) {
        fact = fact * i;
    }
    std::cout << number;
    break;
default:
    std::cout << "Error! operator is not correct";
    break;
}
std::cout << "\nWant to continue?Y(type 1)/N(type 0)";
std::cin >> co;
if (co == 1) {

    goto calculations;
}
return 0;


}

【问题讨论】:

  • number 不确定时for (i = 1; i &lt;= number; i++) {std::cout &lt;&lt; number; 有什么意义(即int number; 事实上,number 是什么,即使在 的代码中也是如此 ? 我没有看到 ever 为该变量赋值的代码,但有几行需要一个。
  • 什么阻止你初始化它?我不明白你的问题。您已经知道问题所在了。
  • 未初始化的变量不是唯一的问题。代码使用fact 变量计算阶乘,然后使用number 变量打印答案。我认为 OP 正在努力解决变量的基本概念。这段代码似乎是 OP 找到了两段不同的代码,并将它们剪切并粘贴在一起,并真正理解了其中一段代码。

标签: c++ for-loop int switch-statement factorial


【解决方案1】:

嗯,number 未初始化。

int main()
{
int number; //uninitialized local variable
[...] //no usage of number
case '!':
    for (i = 1; i <= number; i++) { //first usage of number, before initializing it!
        fact = fact * i;
    }
    std::cout << number;
    break;
[...]
}

幸运的是,您遇到了一个编译错误并且可以修复它(感谢 MSVC!)。对于 gcc(在编译资源管理器中尝试时,它会编译,但我认为会有运行时错误)。

解决方案?大概在循环中用n1替换number,输出fact

【讨论】:

  • 他知道那个号码是未初始化的。他在问题中提到了这一点。这告诉了他任何他不知道的事情。
  • @Eric,我假设他引用了错误消息,但不明白该数字不是未初始化的(因此是引号)。如果没有帮助,我会删除。
  • 此外,它正在添加解决方法,我(可能不正确地)假设他不知道。
  • 基本上,当我看到这样的问题时,我会努力回忆我还是初学者时的困惑程度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多