为什么这个简单的C ++程序给出意想不到的结果?

时间:2014-08-26 00:49:58

标签: c++

我制作了一个简单的C ++程序。我期望浮点输出为5/9,但是为零。有人可以评论,为什么输出是意外的,即零?

#include<iostream>


using namespace std;
void fun(double *ptr);

int main (int argc, char* argv[])
{
    double a;
    fun(&a);
    cout<<a<<endl; // why not floating point 5/9??
}

void fun (double *ptr)
{
    *ptr=(5/9);
}

1 个答案:

答案 0 :(得分:7)

5/9会产生0,因为它是int分割。

你需要做

void fun (double *ptr)
{
    *ptr = (5.0 / 9.0);
}

您需要使用正确的类型文字:

5      // int
5.0    // double
5.0f   // float
5u     // unsigned int
5l     // long
5ul    // unsigned long