[英]c++ cout with float producing strange results
目前,我有以下内容:
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编译的。
该函数编写正确。 在我的机器上(Ubuntu 10.04上的g ++ 4.4.3),一切运行正常。 您确定错误不是由代码的其他部分引起的吗?
您的代码是完全有效的。 我怀疑您可能是在代码的其他部分破坏堆栈或堆,这是最可能的原因。 0x6580a8太短,无法成为对象地址。 而且,他永远不会在同一程序的两次运行中获得相同的地址。
如果您尝试\\ n怎么办?
std::cout << "percentage = " << percentage << "\n";
这是您的实际代码吗?或者是否有其他类型的流而不是cout
?
它使用的是endl
机械手的地址,而不是将其应用于流,这意味着它无法看到所使用的流类型的endl
匹配版本。
如果使用<< "\\n" << std::flush
会发生什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.