某些平台默认情况下int int是unsigned int吗?

时间:2017-02-14 17:09:02

标签: c++ c

默认情况下,int可以取消签名,例如char,如果存在,有人可以提供这些平台吗?

我的意思是char可以取消签名或签名,具体取决于平台。 同样适用于intlongshort

3 个答案:

答案 0 :(得分:10)

不,int始终是签名的。与char不同,signed char可能表现为unsigned charint,具体取决于平台,signed int始终是signed char的同义词,无论平台如何, C和C ++。

  

参考:C99,6.2.5.4:

     

有五种标准的有符号整数类型,指定为short intintlong intlong long intsigned char

     

参考:C ++ 11,3.9.1.2:

     

有五种标准的有符号整数类型:short intintlong intlong long intpublic String toString(){ return hours + ":" + minutes + ":" + seconds }

答案 1 :(得分:7)

char很奇怪:有三种口味,signed charunsigned charchar。普通char可以是有符号或无符号的,具体取决于实现,但在C ++中,它与其他两种类型不同。所有其他整数类型只有两种风格,有符号和无符号;您可以说unsigned intsigned 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的限制必须至少是具有相同符号的指定值(绝对值)。