我想知道如何在C中改变左边的值.
例如:
例如:
1 << 180
我认为结果应该是:
1532495540865888858358347027150309183618739122183602176
(在python [1< <180]中测试);
解决方法
Python支持任意精度算术,C不支持.
而且,根据Standard [expr.shift]:
The behavior is undefined if the right operand is negative,or greater
than or equal to the length in bits of the promoted left operand.
为了在C中使用大整数,您可以使用Boost库,它使用长算术实现为不同的库提供包装:
#include <boost/multiprecision/gmp.hpp> #include <iostream> int main() { boost::multiprecision::mpz_int one(1); std::cout << (one << 180) << std::endl; return 0; }
打印
1532495540865888858358347027150309183618739122183602176