C++ C++;double不能等于两个整数除法

C++ C++;double不能等于两个整数除法,c++,double,division,C++,Double,Division,我有点被这个问题困住了: int a = 5, b = 2; double c = a / b; cout << c; 为什么? 我可以通过以下方法绕过此问题: double aa = a, bb = b; c = aa / bb; 这将产生: 2 2.5 救命啊(您必须至少将一个整数转换为双精度: double c = a/(double)b; 在C++语言中,两个整数值之间的任何算术运算都会返回int值。不同的是,整数除法 < /强>欧几里德除法。只有那个整数值才被铸造

我有点被这个问题困住了:

int a = 5, b = 2;
double c = a / b;
cout << c;
为什么?

我可以通过以下方法绕过此问题:

double aa = a,
bb = b;
c = aa / bb;
这将产生:

2
2.5

救命啊(

您必须至少将一个整数转换为双精度:

double c = a/(double)b;

在C++语言中,两个整数值之间的任何算术运算都会返回int值。不同的是,整数除法<强> < /强>欧几里德除法。只有那个整数值才被铸造成一个双。< /P> 如果需要双精度运算,则必须强制除法对双精度值进行运算,方法是将一个操作数强制转换为双精度,或将其乘以双精度常数
1.0

double c = 1.0 * a / b;

double c=static_cast(a)/b;

在任何给定的上下文中,划分的类型取决于两个操作数的类型,在这种情况下,A和B是2个,因为B是整数,所以输出为整数。数学是作为整数来完成的,然后转换成双元。最好使用C++风格的CaskScript,这已经是Serge Ballesta关于C++ C++风格的答案。.虽然这对初学者来说容易多了,但这是一个更好的练习。
double c = static_cast<double>(a) / b;