目前我有以下内容:
float some_function(){
float percentage = 100;
std::cout << "percentage = " << percentage;
//more code
return 0;
}
给出输出
percentage = 100
但是当我像这样添加一些std :: endl时:
float some_function(){
float percentage = 100;
std::cout << "percentage = " << percentage << std::endl;
//more code
return 0;
}
这给出了输出:
percentage = 1000x6580a8
添加更多endl只打印出更多0x6580a8。
可能导致这种情况的原因是什么?这是在Ubuntu 10.04上用gcc 4.4.3编译的。
答案 0 :(得分:2)
正确编写了该功能。在我的机器上(Ubuntu 10.04上的g ++ 4.4.3)一切顺利。 您确定该错误不是由代码的其他部分引起的吗?
答案 1 :(得分:1)
您的代码完全有效。我怀疑你可能会在代码的其他部分粉碎你的堆栈或堆,这是最可能的原因。 0x6580a8太短而不能成为对象地址。此外,他永远不会在同一个程序的两次运行中获得相同的地址。
答案 2 :(得分:0)
如果您尝试了\ n?
,该怎么办?std::cout << "percentage = " << percentage << "\n";
答案 3 :(得分:0)
这是您的实际代码,还是有不同类型的流而不是cout
?
它使用endl
操纵器的地址而不是将其应用于流,这意味着它无法看到您正在使用的流类型的endl
的匹配版本。 / p>
如果您使用<< "\n" << std::flush
会怎样?