添加后无符号长long错误给定值

时间:2015-11-25 18:44:29

标签: c++ add unsigned-long-long-int long-long

我要添加两个字符串。字符串是十六进制值。我将字符串转换为long long,添加并返回到string之后。但是这个操作没有用。

代码:

  13285923899203179534
+ 8063907133566997305
= 2903086959060625223

我收到了

std::stringstream Stream;
Stream << std::hex << Num;
return Stream.str();

任何人都可以解释这个魔法吗?我该如何解决?

返回十六进制值
var text = "!john david sue !jay";

1 个答案:

答案 0 :(得分:2)

对于某些k,C(和C ++)中的所有无符号算术都以模2 k 出现。在你的情况下,你得到模2 64 的结果,这意味着你的平台上无符号长long是64位。

如果要对平台上大于最大支持类型的整数进行算术运算,则需要使用多精度库,例如GMP