为什么cout命令不打印消息?

时间:2014-01-10 18:41:48

标签: c++ visual-c++ cout

#include <iostream>
using namespace std;

int main()
{
int x = 42;
cout << x; // This line doesn't print! Why?
    return 0;
}

Visual C ++的屏幕截图:http://bildr.no/image/ZlVBV0k0.jpeg

这段代码只给我一个黑色的控制台窗口,当我点击调试时它会闪烁。是不是应该在控制台窗口中打印数字42?这是我在C ++中的第一个应用程序。我有高中C#的经验。

编辑:

现在我尝试了这段代码:

// Primtallsgenerator.cpp : Defines the entry point for the console application.
//

#include <iostream>
using namespace std;

int main()
{
int x = 42;
cout << x << endl; // This line doesn't print! Why?
cin >> x;
    return 0;
}

它仍然不起作用。此处代码的屏幕截图:http://bildr.no/image/ODNRc3lG.jpeg

黑色的窗户仍然闪烁......

6 个答案:

答案 0 :(得分:1)

确实打印了这条消息,你看到它的速度太快了。

添加此命令:

cin >> x;

或者这个

while(true) {}
在返回声明之前

答案 1 :(得分:1)

是的,它会打印该号码。然后程序结束,控制台窗口关闭。在调试器中运行它,并在return 0;行上放置一个断点。然后你会看到它。

答案 2 :(得分:1)

有两点需要注意:

首先,您不是强制缓冲区刷新,因此无法保证在程序结束之前将输出发送到屏幕。将您的cout声明更改为:

cout << x << endl;

其次,Visual Studio将在结束时关闭控制台(在调试模式下)。如果你不调试它(默认情况下为Ctrl-F5),它将保持控制台打开,直到你按下一个键。这将允许您查看输出。或者,您可以在return语句之前添加cin.get(),这将强制程序在允许程序退出之前等待字符在输入流中。

答案 3 :(得分:1)

此代码应该可以正常工作:

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
    int x = 42;
    cout << x; 

    getchar();
    return 0;
}

另请查看有关getchar()

的文档

答案 4 :(得分:0)

我建议在“return 0”语句之前使用系统暂停,如下所示:

system("PAUSE");

这更清洁,更有效。

答案 5 :(得分:0)

如果您正在使用Visual Studio中的控制台应用程序,则必须转到项目的链接器属性并将SubSystem设置为CONSOLE

当您不需要调试器时,习惯在没有调试器的情况下运行代码 (默认情况下为Ctrl + F5)。这样,控制台窗口不会自动闪烁并消失。