我想将两个无符号整数
相乘,但我希望结果在unsigned long long
变量中
unsigned long long M;
unsigned int X;
unsigned int Y;
X = 999999;
Y = 9990;
M = X * Y;
M
应该是 9989990010
但由于某种原因它一直是 1400055418
我已经为此烦恼了一个星期了,我想我已经到了想哭的地步了!
最佳答案
您需要将 X
和 Y
转换为 long long
。
M = (unsigned long long)X * Y;
足以类型转换其中之一,结果将基于较大的类型。
否则结果将是int
,因此会溢出。它将在赋值时转换为 long long
,但为时已晚:-)
关于c++ - unsigned long long 算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160935/