VC++中如果是按F5运行的话,表示以调试方式运行,如果遇到断点可以停下来,也可以单步调试、监视变量等。程序结束时立即退出。
如果是按Ctrl+F5运行的话,表示以独立的方式运行,即使遇到断点也不会停下来。但程序结束时会显示一个"按任意键继续"的东东,让你有足够的时间观察运行结果。
在Windows下的其他编译环境中,要达到类似效果的话,在程序的最后加上一句:
system("pause");
这个system函数包含在头文件stdlib.h(C++是cstdlib)里面。
方法1:使用CTRL + F5运行你的程序.
方法2:在程序结尾加上getchar() or getch(),当然别忘了头文件conio.h.
方法3:在你的代码中插入 system("pause")看看
先解释一下为什么一闪而过:
当你在vc++里运行程序,vc++将会调用行命令模式(即command.com程序),打开你的程序。当程序执行完毕后将自动退出行命令模式。所以你来不及看你的程序的输出。
要解决这个问题,最简单的方案就是在你的代码的最后,return 0;之前,加上
getchar();
//getch()似乎不是ANSI C的一部分
这个语句将使得你的程序做最后一件事情:从输入缓冲区(输入流stdin)中读一个字符。也就是说在你的其他程序结束后,还要敲一下回车才会结束所有程序。
但是,要注意的是:当程序快结束时,如果你的输入缓冲区中已经有字符了,c语言将直接从缓冲区中读取一个字符,然后结束程序。而不等待你的输入。
比如:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出
getchar();//这是你为了防止一闪而过而加的语句
return 0;
}
这个程序结束时将仍然一闪而过。原因在于第一条getchar()表达式执行的时候,将返回你输入的第一个字符,后面的字符(包括回车字符'/n')留在了缓冲区。要解决这类问题,得随机应变,没有统一的解决方案。在这个例子中,可以这样:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出
while(getchar()!='/n')
continue;//这个循环将把输入缓冲区的内容清掉,一直清到换行符。
getchar();//这是你为了防止一闪而过而加的语句
return 0;
}
复杂一点的解决方案是,不要在visual c++中执行。你先生成可执行文件,然后打开行命令模式(运行->cmd),然后在那里运行你的程序,就不会自动退出了。
sorry,刚才试了一下,ctrl+f5确实可以,parason说的很对。
本想不发了,但是写了半天,不发也可惜,况且,从我写的这些,你可以更加理解一些原理性的东西。而且,我写的是一个通用的办法,即使不是visual c++也可以用。