默认情况下,int
可以取消签名,例如char
,如果存在,有人可以提供这些平台吗?
我的意思是char
可以取消签名或签名,具体取决于平台。
同样适用于int
,long
,short
?
答案 0 :(得分:10)
不,int
始终是签名的。与char
不同,signed char
可能表现为unsigned char
或int
,具体取决于平台,signed int
始终是signed char
的同义词,无论平台如何, C和C ++。
参考:C99,6.2.5.4:
有五种标准的有符号整数类型,指定为
short int
,int
,long int
,long long int
和signed char
。参考:C ++ 11,3.9.1.2:
有五种标准的有符号整数类型:
short int
,int
,long int
,long long int
和public String toString(){ return hours + ":" + minutes + ":" + seconds }
。
答案 1 :(得分:7)
char
很奇怪:有三种口味,signed char
,unsigned char
和char
。普通char
可以是有符号或无符号的,具体取决于实现,但在C ++中,它与其他两种类型不同。所有其他整数类型只有两种风格,有符号和无符号;您可以说unsigned int
,signed int
,只是简单int
,但普通int
已签名,它只是signed int
的另一个名称。在C ++标准中,这是第3.9.1节,[basic.fundamental]。
答案 2 :(得分:6)
根据C11 standard section "5.2.4.2.1 Sizes of integer types ":
下面给出的值应该用常量表达式代替 适用于#if预处理指令。而且,除了 CHAR_BIT和MB_LEN_MAX,以下内容应替换为 与表达式具有相同类型的表达式 根据整数转换的相应类型的对象 促销活动。它们的实现定义值应相等或 幅度(绝对值)大于显示的那些,具有相同的 登录即可。
...........................
int
类型对象的最小值
INT_MIN -32767
类型int
的对象的最大值
INT_MAX +32767
因此,您可以看到int
的限制必须至少是具有相同符号的指定值(绝对值)。