我发现long int long和int long long都可以为变量类型编译。long int long,int long long,long long和long long int有什么区别吗?
通常,如果类型具有相同的long数,则其类型是否相同?
1 long:
long l;
int long il;
long int li;2 long:
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;发布于 2015-06-09 08:34:32
根据C++标准(7.1.6.2简单类型说明符)
3当允许使用多个简单类型的说明符时,它们可以按任何顺序与其他类型的说明符自由混合。
因此,例如,以下声明是有效的
long static long const int x = 10;您甚至可以使用constexpr说明符和const限定符。例如
constexpr long static long const int x = 10;顺便说一下,我们忘记了说明符signed!例如,让我们在声明器x之前添加它
constexpr long static long const int signed x = 10;在C中,您还可以在相同的声明说明符序列中使用几个类型限定符。根据C标准(6.7.3类型限定符)
如果同一个限定符在同一个说明符-限定符列表中出现不止一次,无论是直接出现还是通过一个或多个类型防御,行为都是相同的,就好像它只出现了一次.。
因此,例如,在C中,以下声明也是有效的
const long const long static const int const signed x = 10;所以,如果你是根据程序中输入的符号的数量付费的,那么我建议你使用这样的声明。:)
发布于 2015-06-09 08:20:32
类型相同吗..。
是。
C++11§7.1.6.2/3
“当允许多个简单类型说明符_s时,它们可以按任意顺序与其他_decl-说明符自由混合。
发布于 2015-06-09 17:59:15
是的,但请不要。就像英语和德语对形容词和副词有传统的词序一样(例如时间-方式-地点),C和C++也是如此。与传统的顺序不同不会混淆编译器,但它会使您的开发人员感到困惑。我认为传统的秩序大致是按照
static/extern (链接)const/volatile (改性)signed/unsigned (签名)short/long (长度)当然还有一些回旋的余地。
https://stackoverflow.com/questions/30726423
复制相似问题