目前,我有以下内容:

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编译的。

最佳答案

您的代码是完全有效的。我怀疑您可能是在代码的其他部分破坏堆栈或堆,这是最可能的原因。 0x6580a8太短,无法成为对象地址。而且,他永远不会在同一程序的两次运行中获得相同的地址。

关于c++ - C++ cout与float产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3247632/

10-09 13:37