对不起,标题不好,但是我不知道如何命名。我已经解决了一些练习问题,并且遇到了这个问题。面临的挑战是为一个盒子写一个类。因此它具有经度,高度和宽度。其中一种方法应该返回盒子的体积。这就像它的简历:
#include<bits/stdc++.h>
class Box {
private:
int l,b,h;
public:
Box(int L, int B, int H){
l=L;b=B;h=H;
}
int CalculateVolume() {
return b*l*h;
}
};
int main() {
int l,b,h;
std::cin << l << b << h;
Box box(l, b, h);
std::cout << box.CalculateVolume() << std::endl;
}
然后,当出现测试用例时,它给了我一个错误。
Input: 1039 3749 8473
Output: -1355615565
所以我说,好的结果太大。让返回类型更大
long long int CalculateVolume() {
return b*l*h;
}
// No changes to the rest
结果是一样的,所以我说:“还可以,然后做:
unsigned long long int CalculateVolume() {
return b*l*h;
}
// No changes to the rest
Input: 1039 3749 8473
Output: 18446744072353936051
令我高兴的是,我发现结果不是负面的。但是用mi计算器检查结果也不正确。因此,我将其存储在变量中以查看发生了什么。
unsigned long long int CalculateVolume(){
unsigned long long int volume = b*h*l;
std::cout << volume << std::endl;
return volume;
}
// No changes to the rest
Input: 1039 3749 8473
Output:
18446744072353936051
18446744072353936051
我并没有因此而感到惊讶。经过最后的努力,我真的不知道这个想法是从哪里来的。
unsigned long long int CalculateVolume(){ unsigned long long int volume = b*h; unsigned long long int a = volume * l; return a; } // No changes to the rest
而且我很惊讶我得到了正确的答案
Input: 1039 3749 8473 Output: 33004122803
但是我真的不明白为什么。最重要的是,我是否应该在程序中执行此操作,以防万一它必须处理非常大的数字?还是应该如何处理?
对不起,标题不好,但是我不知道如何命名。我已经解决了一些练习问题,并且遇到了这个问题。面临的挑战是为一个盒子写一个类。因此它具有经度,...
非常感谢您的帮助。如果变量是整数,则将运算结果分配给long long int并不重要,该运算将使用int数学完成。因此,我使用的临时解决方案是因为b * h仍然是一个没有问题的整数,然后当我将其乘以l时,它就一直将它们作为long int操作。这将是最终的解决方案: