将 2 个 long 值相除会在 C++ 中产生错误的输出

Dividing 2 long values produces wrong output in c++

我正在除以 2 个 long 值并使用结果的上限。但是我的代码产生了错误的输出。

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main(){
  long first = 100;
  long second = 1000;
  long output = ceil(first/second);
  cout<<"output = "<<output<<endl;
}

这里的预期输出是

output = 1

实际输出:

output = 0

由于长输出的求值顺序 = ceil(first/second);

第一次运算是first/second,100/1000。一旦您使用整数类型(long 是一个整数),结果将是一个 long 并且它被截断为零。 100/1000 =0

那么你有: ceil(0) = 0 // 正如预期的那样

长输出= 0