字符是唯一具有强制大小的类型

Is char the only type with a mandated size?

本文关键字:类型 唯一 字符      更新时间:2023-10-16

在C++标准中:

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

  1. C++还有其他类型具有固定sizeof吗?

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

  1. 不。正如你所说,sizeof(signed char)sizeof(unsigned char)sizeof(char) 被标准定义为 1。请注意,char必须是signedunsigned,但它始终被视为不同的类型。其他任何事情sizeof取决于受某些约束的实现(例如 sizeof(long)不能小于 sizeof(int) .)

  2. C++标准要求sizeof空类是大于零的整数值(否则指针算术会严重中断)。

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

有指定大小的数组:

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

所以sizeof(char[42]) 42.

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

空结构既不是charsigned char也不是unsigned char,所以它不符合这个定义。(顺便说一句,它的sizeof不能0)。

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