c++ “long long”=“long long int”=“long int long”=“int long long”?

我发现long int long和int long long可以编译为一个变量类型。有没有长int long,int long long,long long和long long int之间的区别?

一般来说,类型是否相同,如果它有相同的长数?

1长:

long l;
int long il;
long int li;

2长:

long long ll;
int long long ill;
long int long lil;
long long int lli;

另外如果上面是正确的,以下声明也一样?

long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
最佳答案
根据C标准(7.1.6.2简单类型说明符)

3 When multiple simple-type-specifiers are allowed, they can be freely
intermixed with other decl-specifiers in any order.

所以例如下面的声明是有效的

long static long const int x = 10;

你甚至可以使用constexpr说明符和const限定符。例如

constexpr long static long const int x = 10;

顺便说一下,我们忘了签名的说明符!让我们添加它例如在declarator x之前

constexpr long static long const int signed x = 10;

在C中,您还可以在同一声明说明符序列中使用多个类型限定符。根据C标准(6.7.3型限定器)

5 If the same qualifier appears more than once in the same
specifier-qualifier-list, either directly or via one or more typedefs,
the behavior is the same as if it appeared only once….

所以例如在C下面的声明也是有效的

const long const long static const int const signed x = 10;

所以如果你根据在程序中键入的符号数支付,那么我建议你使用这样的声明。 🙂

转载注明原文:c++ “long long”=“long long int”=“long int long”=“int long long”? - 代码日志