【发布时间】:2012-10-05 18:06:15
【问题描述】:
第一个问题:
- “无符号”总是与“无符号整数”相同吗?
- “signed”是否总是与“int”相同?
- “short”总是与“signed short”相同吗?
- 是……
第二个问题:
如果 C/C++ 标准规定了上述问题的答案,哪些段落与这些问题相关?
【问题讨论】:
第一个问题:
第二个问题:
如果 C/C++ 标准规定了上述问题的答案,哪些段落与这些问题相关?
【问题讨论】:
是的,这些都是有保证的。在 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
C11 在第 6.7.2/2 节中具有类似的映射(它的格式不同,但除此之外它指定了相同的等效组合组,至少对于 C 和 C++ 共有的所有类型)。
【讨论】:
char、signed char 和 unsigned char 在 C++ 中是 3 种不同的类型。在 C 中,它是实现定义的 char 是有符号还是无符号。
char 是有符号还是无符号也是由实现定义的。)
char、signed char 和 unsigned char 是三种不同的类型。在 C 和 C++ 中,char 是有符号还是无符号由实现定义。
char 恰好被签名,那么char 和signed char 实际上是相同的。在 C++ 中,类型标识 是 相关的,因为它与许多语言结构相关,例如函数重载或模板实例化:f(char)、f(signed char) 和 f(unsigned char) 是 3 个有效的不同重载)。
char * 分配给 signed char *,可以吗?