可以在多字 C 类型中的任何地方混合存储和类型限定符吗?

问题描述 投票:0回答:1

我查了一下,这有效:

long static int const unsigned my_variable = 123;

我知道这很愚蠢,但为什么我们一开始就有这样的可能性?

类型名称是多个单词的整个想法已经够糟糕的了,但现在我学会了允许以任何顺序排列的单词并与其他限定符交错?

任何学习 C 的

unsigned int
的新手,都会疑惑
const short
是一种类型还是像
unsigned
那样的某种限定符?那么有没有
const
等等
所有这些似乎都没有必要,更复杂,然后明显地使用一些单字标记来表示所有类型,例如

unsigned float

uint
,这让我怀疑我是否正确理解了某些内容?
    

c syntax language-lawyer
1个回答
2
投票
§6.7.2 类型说明符 ¶2

:

每个声明的声明说明符以及每个结构体声明和类型名称的说明符限定符列表中应至少给出一个类型说明符。每个类型说明符列表应为以下多重集之一(当每项有多个多重集时,以逗号分隔);类型说明符可以以任何顺序出现,可能与其他声明说明符混合。

列表中给出的多重集之一是:

ulongint

long long
signed long long
long long int

这个措辞意味着你也可以使用

signed long long int

作为类型名称。这不是一个好的做法,但你可以做到。

请注意,在除第一个之外的任何地方指定存储类都是过时的 —

§6.11.5 存储类说明符

注释:

将存储类说明符放置在声明中声明说明符开头以外的位置是一项过时的功能。

© www.soinside.com 2019 - 2024. All rights reserved.