什么是“签名”关键字的实际使用?
我知道无符号整数只是正数(和0),并且与正常的int相比可以有两倍的值。 有什么区别吗?
int variable = 12;
和:
signed int variable = 12;
何时以及为什么要使用signed关键字?
只有一个实例可能需要使用signed
关键字。 signed char
与“plain” char
通常是不同的types,根据实现可能是有符号或无符号types。
C ++ 14 3.9.1 / 1说:
char
对象是否可以包含负值是实现定义的。 字符可以显式地声明为unsigned
或有signed
。 Plainchar
,signed char
和unsigned char
是三种不同的types[…]
在其他情况下signed
是多余的。
在C ++ 14之前(和C),还有第二个实例:位域。 它是实现定义是否,例如, int x:2;
(在类的声明中)与unsigned int x:2;
或者像signed int x:2
。
C ++ 11 9.6 / 3说:
它是实现定义一个明文(既不明确签名也不是无符号)
char
,short
,int
,long
或long long
位域是否有符号或无符号。
但是,因为C ++ 14已经改变了,所以int x:2;
总是表示signed int
。 链接到讨论
在int
的情况下,没有区别。 它只是与char
有所不同,因为
- 它没有定义
char
是有符号的还是无符号的 -
char
,signed char
和unsigned char
是三种不同的types。
所以你应该使用signed
如果你需要一个signed char
(这可能很less)。 除此之外,我想不出一个理由。
signed
是默认的整数types。 所以不,在你给的例子中没有什么区别。 只有在char
的情况下才有区别。
来源: C ++参考
两者在int之间没有区别。 如果您还声明了unsigned int,那么您可能会包含单词signed的格式,以便它们更容易排列并且可读,但是对于所有意图和目的,您不需要使用signed关键字。