我知道无符号整数只是正数(和0),并且与普通int相比可以加倍.两者之间有什么区别吗?
int variable = 12;
Run Code Online (Sandbox Code Playgroud)
和:
signed int variable = 12;
Run Code Online (Sandbox Code Playgroud)
您何时以及为何使用signed关键字?
CB *_*ley 90
只有一个实例可能需要使用signed关键字.signed char始终是与"plain"不同的类型,char根据实现,它可以是有符号或无符号类型.
C++ 14 3.9.1/1说:
实现定义
char对象是否可以保存负值.可以显式声明字符unsigned或signed.平原char,signed char并且unsigned char是三种不同的类型[...]
在其他情况下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,无论如何是三种不同的类型.因此,signed如果您需要signed char(可能很少),您应该使用.除此之外,我想不出一个理由.