代码之家  ›  专栏  ›  技术社区  ›  shuttle87 Bhargav Boda

c++不能用float产生奇怪的结果

  •  1
  • shuttle87 Bhargav Boda  · 技术社区  · 14 年前

    目前我有以下几点:

    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
    

    是什么原因造成的?这是在ubuntu10.04上用gcc4.4.3编译的。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Puppy    14 年前

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

        2
  •  2
  •   Piotr Duda    14 年前

    您确定错误不是由代码的其他部分引起的吗?

        3
  •  0
  •   JonH    14 年前

    如果您尝试了\n怎么办?

    std::cout << "percentage = " << percentage  << "\n";
    
        4
  •  0
  •   Mark B    14 年前

    这是您的实际代码,还是有不同类型的流而不是 cout ?

    它取的是 endl 结束 对于您正在使用的流类型。

    如果你使用 << "\n" << std::flush 相反呢?