我正在用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/

10-11 22:33
查看更多