放置未签名的关键字

Placement of the unsigned keyword

本文关键字:关键字      更新时间:2023-10-16

是否

unsigned int a;

与相同

int unsigned a;

也就是说,我想知道的,在以下代码中:

typedef int unsigned my_uint32;

"unsigned"是指my_uint32还是指int?它和一样吗

typedef unsigned int my_uint32;

要继续,语法为:

typedef keywords alias;

因此CCD_ 1与CCD_。

当你定义自己的类型时,你可能会很谨慎。在您的情况下,如果您想要一个4字节的类型,如果您用C编码,则应该使用stdint.h(uint32_t)中定义的类型,或者如果您用C++编码,则应使用cstilt中定义的,因为"int"是"至少4字节",而不是在每种情况下都是"4字节"。

首先,您不能创建标记为unsigned/signed的自己的类型,因此它只能应用于预先存在的类型。

其次,是的,交换限定符的位置是有效的:

[C++11: 7.1.6.2/3]:当允许多个简单类型说明符时,它们可以以任何顺序与其他decl说明符..]

因此,这两个声明是等价的

C++声明(在最简单的情况下)由两部分组成:声明说明符和声明符。所有内容正在声明的内容或第一个"运算符"(例如*&)是声明说明符的一部分,其中order没关系。所以你可以自由地写这样的东西:

int const unsigned static i;

(如果你不在乎你的同事怎么看你的代码)。

C已经反对将存储类说明符(staticextern等),而这是自公元前早期以来,一种普遍接受的惯例。其余:

  • 我总是看到修饰符在基本类型之前(例如。typedef unsigned int my_uint320),基本类型出现时。大部分我工作过的地方将使用简单的unsigned,而不是unsigned int

  • 我也经常看到signed/unsigned在任何长度修饰符:unsigned long,而不是long unsigned

  • CCD_ 17或CCD_。大部分我认识的更有经验的程序员把它放在了最后声明说明符的,但这是最近的发展,许多人继续使用老年人约定,并将其立即放在存储类之后说明符。

对于除存储类说明符之外的所有类任意的我想说的唯一一条普遍的规则是没有像我在实例

声明是等价的。