gpt4 book ai didi

c++ - C++ 中的 "long"、 "long long"、 "long int"和 "long long int"有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 11:29:29 32 4
gpt4 key购买 nike

我正在从 Java 过渡到 C++,并且对 long 数据类型有一些疑问。在 Java 中,要保存大于 232 的整数,您只需编写 long x;。但是,在 C++ 中,long 似乎既是数据类型又是修饰符。

long似乎有几种使用方式:

long x;
long long x;
long int x;
long long int x;

另外,好像有这样的东西:

long double x;

等等。

所有这些不同的数据类型有什么区别,它们的目的是否相同?

最佳答案

longlong int是相同的。 long long 也是如此和 long long int .在这两种情况下,int是可选的。

至于这两个集合之间的区别,C++ 标准规定了每个集合的最小范围,而 long long 至少long 一样宽.

标准的控制部分(C++11,但它已经存在了很长时间)之一是 3.9.1 Fundamental types ,第 2 节(后面的部分给出了无符号整数类型的类似规则):

There are five standard signed integer types : signed char, short int, int, long int, and long long int. In this list, each type provides at least as much storage as those preceding it in the list.

7.1.6.2 Simple type specifiers 中还有一个表 9 ,它显示了说明符到实际类型的“映射”(表明 int 是可选的),其中一部分如下所示:

Specifier(s)         Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int

注意说明符和类型之间的区别。说明符是您告诉编译器类型是什么的方式,但您可以使用不同的说明符以最终获得相同的类型。

因此 long正如您的问题所提出的那样,它本身既不是类型 也不是 修饰符,它只是 long int 的说明符类型。 long long 同上作为 long long int 的说明符输入。

虽然 C++ 标准本身并没有指定整数类型的最小范围,但它确实在 1.2 Normative references 中引用了 C99。 ,如申请。因此,C99 5.2.4.2.1 Sizes of integer types <limits.h> 中列出的最小范围适用。


根据 long double ,这实际上是一个浮点值而不是整数。与整数类型类似,它的精度要求至少与 double 一样高。并提供该类型的值的超集(意味着至少个值,不一定更多个值)。

关于c++ - C++ 中的 "long"、 "long long"、 "long int"和 "long long int"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971732/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com