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

发布于 2024-12-22 20:43:29 字数 233 浏览 2 评论 0原文

我对 C 中的 long 的工作方式有点困惑。

如果我询问 Java 中 long 的最大值,我会得到一个数以十亿计的数字。如果我用 C 语言请求它,无论有没有签名,都会有数十亿。

Java 是建立在 C 基础之上的……那么差异从何而来呢?

我还尝试过使用 long long 值、无符号/有符号 long 值和 long int 值来表示文字。他们似乎都没有处理超过数十亿的数字。为什么?我犯错了吗?

I'm a little confused as to how longs work in C.

If I ask for the maximum value of a long in Java I get a number in the quintillions. If I ask for it in C, signed or unsigned, it's in the billions.

Java is built on C... so where is the difference coming from?

I've also tried representing literals with long long values, unsigned/signed long values and long int values. None of them seem to handle numbers past the mid-billions. Why? Am I making a mistake?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏璃陌 2024-12-29 20:43:29

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

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

The C standard defines long to be at least as large as int. The actual size is implementation dependent. This is not the case for Java, in which long is required to be 64 bits long.

The C99 standard defines fixed size integer types like int64_t defined in stdint.h that you can use if you need fixed size integers on all platforms.

沫尐诺 2024-12-29 20:43:29

C 也有long long 类型。该版本保证至少为 64 位。

C also has the long long type. That one is guaranteed to be at least 64 bit.

时光磨忆 2024-12-29 20:43:29

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

If you want to work with bigger numbers you can use the GNU MP Bignum Library here:
http://gmplib.org/
The numbers and the precision is only limited by available memory of the machine that it runs on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文