c++ - unsigned long long 算术

标签 c++ visual-c++ long-integer unsigned

我想将两个无符号整数相乘,但我希望结果在unsigned long long变量中

unsigned long long M;
unsigned int X;
unsigned int Y;

X = 999999;
Y = 9990;
M = X * Y;

M 应该是 9989990010 但由于某种原因它一直是 1400055418

我已经为此烦恼了一个星期了,我想我已经到了想哭的地步了!

最佳答案

您需要将 XY 转换为 long long

M = (unsigned long long)X * Y;

足以类型转换其中之一,结果将基于较大的类型。

否则结果将是int,因此会溢出。它将在赋值时转换为 long long,但为时已晚:-)

关于c++ - unsigned long long 算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160935/

相关文章:

c++ - C++ MS Visual Studio错误 “referenced in function public: void __thiscall …”

Java:检查一个位是长的0还是1

C++ Intel TBB和Microsoft PPL,如何在并行循环中使用next_permutation?

c++ - 从 'int' 到 'long int' 性能显着下降

php - SQL执行时间太长

c++ - POSIX/UNIX : How to reliably close a file descriptor

c++ - VS2012 静态代码分析器在取消分配内存 vector 时给出误报

c++ - OpenGL 中的振荡颜色

c++ - 尽管构建成功,但 Eclipse Neon 构建错误

visual-studio - 禁用 Microsoft Visual C++ 运行时错误