在C++中使用COUT时,无法打印100000*100000。产量为1410065408,而不是10000000000。我该怎么解决?谢谢
默认情况下,整数文本的类型为int
,这会导致溢出。使用100000LL
将数字标记为long long
,并产生长-长结果。
https://en.cppreference.com/w/cpp/language/integer_literal
该值被截断,因为10000000000大于默认的整数类型int最大值(std::numeric_limit<int>::max()
(,
hex(10000000000) = 0x2540be400
hex(1410065408) = 0x540be400
您可以看到第一个字节被截断了。
修复它:
100000LL * 100000
或者铸造
static_cast<int64_t>(100000) * 100000