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

use*_*273 -1 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);
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 7

5/9将导致0因为它是int分裂.

你需要这样做

void fun (double *ptr)
{
    *ptr = (5.0 / 9.0);
}
Run Code Online (Sandbox Code Playgroud)

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

5      // int
5.0    // double
5.0f   // float
5u     // unsigned int
5l     // long
5ul    // unsigned long
Run Code Online (Sandbox Code Playgroud)