对于这种题,先算一下 123456786543 需要多少bits才能表示。
如果在windows下,打开windows自带的计算器,输入 123456786543n/2n=,就得到一个数字 36.845215188810476422425343381628,也就是至少要37bits的整型才可以。
然后你就在<stdint.h>找大于37bits的整型,比如
int64_t / uint64_t
int_least64_t / uint_least64_t
int_fast64_t / uint_fast64_t
当然,前提是你的编译器要支持C语言标准,因为这些都是标准C语言的内容,即TC、VC等就没办法了。
现在的VC可以用 long long / unsigned long long
而VC5/VC6可以用 __int64 / unsigned __int64