我正在编写一个词法分析器作为编译器项目的一部分,我需要检测一个整数是否大于int中的整数,这样我就可以打印错误了.是否有适合此目的的大整数C++标准库?
用于将数字字符串转换为整数的标准C库函数应该检测超出范围的数字,并将errno设置为ERANGE以指示问题.看到这里
你可以使用libgmp.但是,我认为,出于您的目的,这是不必要的.
例如,如果您将数字解析为32位unsigned int,那么
解析第一个最多9个十进制数字(即地板(32*log(2)/ log(10)).如果还没有更多,则数字正常.
拿下一个数字.如果你得到的数字/ 10不等于上一步的数字,那么数字就不好了.
如果你有更多的数字(例如超过9 + 1),那么数字就是坏的.
否则这个数字很好.
一定要跳过任何前导零等.