我正在用C++写一个简单的程序,我注意到当我在乘以一些数字时切换顺序时,会得到2个不同的输出,无法弄清楚它为什么发生。
void multiplier()
{
double r, v1, v2;
cout << "Enter the value of r" << endl;
cin >> r;
v1 = 4/3*M_PI*r*r*r;
cout << v1 << endl;
v2 = M_PI*4/3*r*r*r;
cout << v2 << endl;
}
根据计算器,第二个输出是正确的输出。 最佳答案
这里发生的是整数除法和浮点除法之间的区别。乘法和除法从左到右解释。在第一种情况下,首先读取4/3
。当您编写4/3
时,编译器会将其解释为整数除法,这将返回1
。但是,在第二种情况下,M_PI*4
将当前值转换为double
,因此当您接下来将其除以3时,程序将执行浮点除法,从而为您提供正确的答案。
关于c++ - 乘法期间的C++运算顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64507892/