C/C++中整数类型别名的标准保证?例如:"unsigned"是否总是等于"unsigned int"?

use*_*883 15 c c++ alias types integer

第一个问题:

  • "unsigned"是否始终与"unsigned int"相同?
  • "签名"总是与"int"相同吗?
  • "短"总是和"签名短"相同吗?
  • 是......

第二个问题:

如果C/C++标准指定了上述问题的答案,那么哪些段落与它们相关?

Jam*_*lis 12

是的,这些都是有保障的.在C++ 11中,参见§7.1.6.2[dcl.type.simple]/table 10,其中列出了所有简单类型说明符(及其组合)及其含义.例如,该表包括以下内容:

unsigned      => unsigned int
unsigned int  => unsigned int

signed        => int
signed int    => int
int           => int
Run Code Online (Sandbox Code Playgroud)

C11在§6.7.2/ 2中有一个类似的映射(它的格式不同,但是它指定了相同的等价组合组,至少对于C和C++共有的所有类型都是如此).

  • 在C和C++中,`char`,`signed char`和`unsigned char`是三种不同的类型.在C和C++中,它是实现定义的`char`是有符号还是无符号. (11认同)
  • 值得注意的是,`char`,`signed char`和`unsigned char`是C++中的3种不同类型.在C中,它是实现定义的`char`是签名的还是未签名的. (4认同)