首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“长”=“长”吗?

“长”=“长”吗?
EN

Stack Overflow用户
提问于 2015-06-09 08:11:11
回答 4查看 11.4K关注 0票数 158

我发现long int longint long long都可以为变量类型编译。long int longint long longlong longlong long int有什么区别吗?

通常,如果类型具有相同的long数,则其类型是否相同?

1 long:

代码语言:javascript
复制
long l;
int long il;
long int li;

2 long:

代码语言:javascript
复制
long long ll;
int long long ill;
long int long lil;
long long int lli;

如果上述声明是正确的,下面的声明也是相同的吗?

代码语言:javascript
复制
long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
EN

回答 4

Stack Overflow用户

发布于 2015-06-09 08:34:32

根据C++标准(7.1.6.2简单类型说明符)

3当允许使用多个简单类型的说明符时,它们可以按任何顺序与其他类型的说明符自由混合。

因此,例如,以下声明是有效的

代码语言:javascript
复制
long static long const int x = 10;

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

代码语言:javascript
复制
constexpr long static long const int x = 10;

顺便说一下,我们忘记了说明符signed!例如,让我们在声明器x之前添加它

代码语言:javascript
复制
constexpr long static long const int signed x = 10;

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

如果同一个限定符在同一个说明符-限定符列表中出现不止一次,无论是直接出现还是通过一个或多个类型防御,行为都是相同的,就好像它只出现了一次.。

因此,例如,在C中,以下声明也是有效的

代码语言:javascript
复制
const long const long static const int const signed x = 10;

所以,如果你是根据程序中输入的符号的数量付费的,那么我建议你使用这样的声明。:)

票数 143
EN

Stack Overflow用户

发布于 2015-06-09 08:20:32

类型相同吗..。

是。

C++11§7.1.6.2/3

当允许多个简单类型说明符_s时,它们可以按任意顺序与其他_decl-说明符自由混合。

票数 116
EN

Stack Overflow用户

发布于 2015-06-09 17:59:15

是的,但请不要。就像英语和德语对形容词和副词有传统的词序一样(例如时间-方式-地点),C和C++也是如此。与传统的顺序不同不会混淆编译器,但它会使您的开发人员感到困惑。我认为传统的秩序大致是按照

  1. static/extern (链接)
  2. const/volatile (改性)
  3. signed/unsigned (签名)
  4. short/long (长度)
  5. 基本类型(头名词)

当然还有一些回旋的余地。

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30726423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档