我对C中的工作时间有点困惑。
如果我在Java中要求long的最大值,我会在quintillions中得到一个数字。如果我用C签名,签名或未签名,那就是数十亿。
Java是建立在C ...所以差异来自哪里?
我还尝试用长long值,unsigned / signed long值和long int值表示文字。他们似乎都没有处理过数十亿中期的数字。为什么?我犯了错误吗?
答案 0 :(得分:10)
C标准将long
定义为至少与int
一样大。实际大小取决于实现。对于Java,情况并非如此,其中long
需要64位长。
C99标准定义了固定大小的整数类型,如int64_t
中定义的stdint.h
,如果您需要在所有平台上使用固定大小的整数,则可以使用这些类型。
答案 1 :(得分:2)
C也有long long
类型。保证至少64位。
答案 2 :(得分:0)
如果您想使用更大的数字,可以在此处使用GNU MP Bignum Library: http://gmplib.org/ 数字和精度仅受其运行的机器的可用内存限制。