繁体   English   中英

c ++ cout与float产生奇怪的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM