char是唯一具有强制规模的类型吗?

时间:2017-01-17 09:13:21

标签: c++ sizeof

在C ++标准中:

  

sizeof(char)sizeof(signed char)sizeof(unsigned char)1

  1. C ++中是否有其他类型的固定sizeof

  2. 空结构是否符合此定义?

3 个答案:

答案 0 :(得分:10)

  1. 没有。如您所说,sizeof(signed char)sizeof(unsigned char)sizeof(char)由标准定义为1.请注意char必须是signed或{{1但它始终被认为是一种独特的类型。 unsigned其他任何内容都取决于实施,但会受到一些限制(例如sizeof不能小于sizeof(long)。)

  2. C ++标准要求sizeof(int)一个空类是一个大于零的整数值(否则指针运算会破坏)。

答案 1 :(得分:1)

  

1)C ++中是否还有其他具有固定大小的类型?

有些数组具有指定的大小:

sizeof(T[N]) == N * sizeof(T)

所以sizeof(char[42])42

  

2)空结构是否符合此定义?

空结构既不是charsigned charunsigned char,所以它与此定义不对应。 (顺便说一句,其sizeof不能是0)。

答案 2 :(得分:-1)

关于问题1,您还有stdint.h中的类型。

相关问题