【问题标题】:Why does this code output before even reading input?为什么这个代码在读取输入之前就输出了?
【发布时间】:2018-12-14 02:21:50
【问题描述】:

我的代码在读取我的输入之前输出 0,即 max_explode 的值。为什么会这样?

#include <iostream>
#include <vector>
#include <algorithm>
#define MAX 100
using namespace std;

int N,cnt=0;
vector<int> arr;
bool seen[MAX+1];
int main()
{
  for (int i = 0; i < N; i++) seen[i]=false;
  int max_explode=0;
  for (int i = 0; i < N; i++)
  {
    int cow;
    cin >> cow;
    arr.push_back(cow);
  }
  sort(arr.begin(),arr.end());
  cout << max_explode << "\n";
  return 0;
}

【问题讨论】:

  • N 的值是多少?啊哈。如果您只是检查代码、打印出一些变量或只是使用调试器,这样的问题应该很容易解决。另外,我要强调的是,您不应该下意识地尝试将 StackOverflow 用于此类事情。如果代码行为异常,请对自己有点好奇。调试、检查,您就可以弄清楚这一点。
  • 奇怪的是 g++ 4.9 (-pedantic -Wall -Wextra) 完全错过了这一点。
  • @user4581301 没有什么可警告的。 N 是一个全局变量,因此将被初始化为零。但当然,这使得该程序做的不多。还是你的意思是别的?
  • 在我的机器上按编码工作。

标签: c++ input io output


【解决方案1】:

您在循环中读取输入:

for (int i = 0; i < N; i++)
{
  int cow;
  cin >> cow;
  arr.push_back(cow);
}

但是,N 从未显式初始化。由于它是一个全局变量,它会自动初始化为0,并且您的循环永远不会运行。

【讨论】:

    【解决方案2】:

    具体来说,您的第 7 行中有一个小问题。您已定义变量 N,但尚未对其初始化值。

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2016-04-20
      相关资源
      最近更新 更多