Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在C中使用长数据类型?_Java_C_Rounding_Long Integer - Fatal编程技术网

Java 如何在C中使用长数据类型?

Java 如何在C中使用长数据类型?,java,c,rounding,long-integer,Java,C,Rounding,Long Integer,我有点困惑,在C语言中工作多久 如果我问Java中long的最大值,我会得到一个五分之一的数字。如果我用C语言来求它,不管是有符号的还是无符号的,它都有几十亿 Java是建立在C。。。那么,区别从何而来 我还尝试过用long-long值、无符号/有符号long值和long-int值表示文字。他们中似乎没有一个能处理超过数十亿美元的数字。为什么?我犯错误了吗?C标准将long定义为至少与int一样大。实际大小取决于实现。Java的情况并非如此,在Java中,long的长度必须为64位 C99标准定

我有点困惑,在C语言中工作多久

如果我问Java中long的最大值,我会得到一个五分之一的数字。如果我用C语言来求它,不管是有符号的还是无符号的,它都有几十亿

Java是建立在C。。。那么,区别从何而来


我还尝试过用long-long值、无符号/有符号long值和long-int值表示文字。他们中似乎没有一个能处理超过数十亿美元的数字。为什么?我犯错误了吗?

C标准将
long
定义为至少与
int
一样大。实际大小取决于实现。Java的情况并非如此,在Java中,
long
的长度必须为64位


C99标准定义了固定大小的整数类型,如
stdint.h
中定义的
int64_t
,如果您在所有平台上都需要固定大小的整数,则可以使用该类型。

C还有
long
类型。该值保证至少为64位。

如果您想处理更大的数字,可以在此处使用GNU MP Bignum库:
数字和精度仅受其运行机器的可用内存的限制。

只需补充一点:它通常取决于操作系统的位,但当然不一定是这样。我可以在标准C库中使用64位长吗?@ghostsoldier23您可以在使用64位值的库中使用64位长,通常要求将程序编译为64位,例如当
size\u t
为64位时。C99将
long-long-int
定义为至少能够保存64位有符号整数,并且大于
long-int
的大小。它不一定是64位的。@Mehrdadadafshari,对,我不够精确,谢谢,更改了。@Mehrdad:实际上,你说过
long-long-int
的大小必须严格大于
long-int
的大小;对吗?当然,一致性实现可以提供与
long int
相同大小的
long int
long-long-int
的大小不能小于
long-int
@JonathanLeffler的大小,这不是严格意义上的。更大,如我在回答中所写的“>=”——但
long int
应至少为32位,
long-long int
应至少为64位。但是,如果一致性实现将对两者使用相同的大小,则在这种情况下,两者至少应为64位。