2014-11-25 95 views
0

当我运行该程序并输入数字时,例如数字7,最终的cout命令只能偶尔使用。否则,程序成功退出,但结果不会打印。这是为什么发生?C++ cout有时仅打印

#include <iostream> 
#include <cmath> 

double treble(double); 

int main() 
{ 
    using namespace std; 
    cout << "Enter a number:" << endl; 

    double numways; 
    cin >> numways; 

    numways = treble(numways); 

    cout << "Your number trebled is: " << numways << endl; 

    return 0; 
} 

double treble(double n) 
{ 
    return n * 3; 
} 
+3

呃,你为什么把'使用命名空间std;'里面的功能'treble'? – 2014-11-25 06:58:38

+0

您正在使用哪个编辑器编译或运行?我相信你已经正确地把握住了,但是它并没有停留,因为退货正在退出程序。尝试在返回0之前执行“cin”以暂停程序并查看值。 – Nihar 2014-11-25 07:02:13

+0

对不起,这个品牌,已经删除它,问题仍然存在@余浩。 – 2014-11-25 07:05:01

回答

1

您应该把using namespace std;放在所有函数声明之外,正好在您的#include指令下。另外,当你说它不打印时,控制台在显示结果之前是否关闭?在这种情况下,我会主张使用简单的cin来“暂停”程序。你可以完全按照@Nihar的说法,尽管我可能会建议使用string而不是int,这样如果你不小心键入了int以外的内容,它不会中断。

事情是这样的:

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

double treble(double); 

int main(){ 
    cout << "Enter a number:" << endl; 

    double numways; 
    cin >> numways; 

    numways = treble(numways); 

    cout << "Your number trebled is: " << numways << endl; 

    string foo; 
    cin >> foo; 
    return 0; 
} 

double treble(double n){ 
    return n * 3; 
} 
+0

好的,谢谢。我的IDE正在输出 输入一个号码: RUN FINISHED;退出值0;实时:770ms;用户:0ms;系统:0ms 所以我不认为控制台提前关闭。 – 2014-11-25 07:29:47

+0

“你应该使用命名空间标准;在所有函数声明之外......”这通常是不好的建议,并且在这里没有任何关系。 – juanchopanza 2014-11-25 07:46:47

+1

'std :: cin.get()'足以暂停程序,不需要变量和'operator >>'。 – Chnossos 2014-11-25 07:49:19

1

尝试与此=>把

int temp; 
cin>>temp; 

return 0;之前暂停程序,因为执行完毕(成功)最后的输出可以写入控制台前。

+0

这是答案吗? – luk32 2014-11-25 07:19:12

+0

@ luk32也许它的格式不正确,但我认为它解决了OP的问题,那么这有什么问题? – Lrrr 2014-11-25 07:30:03