将 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
我正在除以 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