【问题标题】:Why does my output contain a 0?为什么我的输出包含 0?
【发布时间】:2013-07-27 12:39:21
【问题描述】:

我有以下代码:

 #include <iostream>
 #include <string>
 using namespace std;

 int main()
 {
     int xxx;

     cout << "Enter an integer: 2011 ";

     cin >> xxx;

     cout << "Enter your name: John " ;
     string yyy;
     cin >> yyy; 

     cout << yyy << "entered" << xxx << endl;

     return 0;
 }

我预计输出是:

输入一个整数:2011 输入您的姓名:John John 输入 2011

但是我得到了以下输出:

输入一个整数:2011 输入您的姓名:John enter0

  • 为什么我没有得到预期的输出?

  • 0 是从哪里来的?对我来说似乎有点随机

还有一点不同的问题,之前可能已经回答过:

  • 如果我希望我的输出整齐有序,如下所示,我将如何做到这一点,即我需要在代码中添加什么?

输入您的整数:2011

输入您的姓名:约翰

约翰进入 2011 年

【问题讨论】:

  • 抱歉,无法区分第一个和第二个输入示例。你有什么不同?
  • 澄清一下,当您运行代码时,您是否在行中输入了任何内容?即,当第一个查询到来时(输入整数:2011),您实际上输入了整数吗?

标签: c++ debugging


【解决方案1】:

您的代码和解释有些地方不清楚。我会尽量澄清和解释。

首先,当我运行该程序时,它运行良好。存在一些美学问题,但我们暂时将其忽略。

所以,您已经掌握了 I/O 的基础知识。当你使用cout时,它输出一些东西,当你使用cin时,它是一个输入操作符。因此,您必须输入一些内容才能使其工作,如下例所示:

//Code
int x;
cout <<"Enter an integer: "<<;
cin >> xxx;

控制台上应该出现什么:

>Enter an integer: _

(下划线为光标)。然后你应该输入一个整数

>Enter an integer: 231

然后,按回车键后,您输入的整数 231 将存储在 XXX 中。在这里我不得不停下来问一下,你的代码中出现“2011”的原因是什么:

cout << "Enter an integer: 2011 ";

如果您认为这是输入,那不是。运行后,您必须在控制台窗口中手动编写一些内容。如果它是别的东西,它会分散注意力并且......嗯......没用。

同样的原则也适用于 string 组件。如果您需要我澄清,请告诉我。

此外,您确实应该使用空格来清除输出。您的输出文本显示如下:

cout << yyy << "entered" <<< xxx;

相反,您应该使用:

cout << yyy << " entered " << xxx;

这提供了一个更整洁的输出,您可以阅读,即

>Johnentered231

>John entered 231

根据您的评论

以下是一些帮助您入门的链接:

语言: C++ Tutorial (follow them sequentially!)

编译器BloodShed Dev Visual Studio (C++ and more)

【讨论】:

  • 哦,我明白了。这听起来合乎逻辑。但是,我目前正在使用这个网站:compileonline.com/compile_cpp_online.php。在这里我没有得到 >Enter an integer:_ ,我做错了什么还是对你来说也是如此?
  • 好吧,我强烈建议使用编译器而不是在线编译器。有几个,包括 Visual C++ Express(免费)、Bloodshed Dev 和 Borland。如果您认真学习并且正在开始学习,我对此表示赞赏,但最好使用适当的工具来完成。在线编译器似乎不接受输入。
  • 是的,我 100% 同意,但遗憾的是我的 C++ express 遇到了问题(正如您在我之前的问题中看到的那样)。但是,由于这不是这个问题的真正一部分,所以 +1 这个很棒的答案。如果您只能澄清为什么它说为entered0(不是很重要,只是为了感兴趣),我会接受您的回答。
  • 它说“entered0”,因为它并没有真正得到输入。发生的是它读取“cout”并输出内容。然后它读取“cin”但不做任何事情。因此,在变量“yyy”中,什么都没有,而在“xxx”中,有一个 0(编译器可能会将 0 放入新的整数中)。因此,当它输出值时,yyy 不包含任何内容,而 xxx 包含 0。所以,您会看到 (blank)entered0
【解决方案2】:

您的程序对我来说很好。此外,为了整齐地组织您的输出,请使用空格和控制字符。如果您希望您的输出看起来更好,我建议您将程序的输出行更改为:

cout << yyy << " entered " << xxx << endl;

注意“输入”周围使用的空格。让我对您的代码感到恼火的另一件事是您缺少变量的描述性名称。给他们一些有意义的东西。例如,将“xxx”更改为“number”,将“yyy”更改为“name”。从长远来看,它会为您省去很多麻烦。

【讨论】:

  • 你用的是什么IDE?
  • 我的 IDE 是 Code::Blocks,但重要的是编译器。我将 MinGW 与 GCC 4.8.1 一起使用。
【解决方案3】:

我认为您对 cout 和 cin 感到困惑。 cout 仅用于输出。在 cout 之后写 cin 并且不给它任何输入不会取值“John”。

例如,

 cout << "Enter an integer: 2011 "; 

 cin >> xxx;

应该是

 cout << "Enter an integer: "; 

 cin >> xxx;

然后你输入 2011

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多