首页 > 解决方案 > 乘法期间的 C++ 运算顺序

问题描述

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

第二个输出是根据计算器的正确输出。

标签: c++

解决方案


这里发生的是整数除法和浮点除法之间的区别。乘法和除法从左到右解释。在第一种情况下,首先4/3读取 。当您编写4/3时,编译器将其解释为整数除法,这将返回1. 但是,在第二种情况下,M_PI*4将当前值变为 a double,因此当您接下来除以 3 时,程序会执行浮点除法,从而为您提供正确答案。


推荐阅读