我制作了一个简单的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);
}
答案 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