void 类型
void
类型表示空类型,它是一个不完整类型(Incomplete Type),所以定义一个void类型的对象是不允许的。void类型不能够用来定义数组或引用,但是 void*
指针是允许的,同时void也可以作为函数的返回类型。
std::nullptr
std::nullptr
定义在<cstddef>
中,表示null pointer,它比较特殊,它自己并不是一个指针类型,同时也不指向任何类型;
Boolean 类型
bool
类型,bool类型的长度是实现决定的,sizeof(bool)
并不总是1;
Integer 整数类型
int
类型至少2Byte,在32/64位系统上,几乎总是4Byte;
int的类型修饰符
int修饰符分为2类:有无符号
和 长度
,这些修饰符可以任意组合,且顺序无关 (long int unsigned long == unsigned long long int)
- 有无符号
- signed (signed是默认的)
- unsigned
- 长度
- short -- int空间将被优化,但长度至少2Byte
- long -- 长度至少4Byte
- long long -- 长度至少8Byte(C++11)
std::size_t
std::size_t
表示sizeof操作符的返回类型(unsigned int)?
字符类型
- signed char
- unsigned char
- char -- 表示UTF-8字符集,默认signed
- wchar_t -- 表示宽字符,在支持UNICODE字符集的系统上占32bits,但在windows系统中占16bits,表示UTF-16字符集;
- char16_t -- 用于表示UTF-16字符集,16bits
- char32_t -- 用于表示UTF-32字符集,32bits
浮点类型
- float -- 单精度浮点,32bits
- double -- 双精度浮点,64bits
- long double -- 扩展精度浮点,通常为80bits
浮点类型还包括一些特殊值:
- infinity
- -0.0, 与0.0相等,但1.0/-0.0=-INFINITY
- NaN -- 与任何值都不相等
取值范围
各种类型的取值范围可以通过std::numeric_limits<Type>
来获取,如:
std::numeric_limits<unsigned char>::min()
std::numeric_limits<float>::max()
其他基础类型或宏
除了以上的基础类型外,C++还定义了以下basic type:
- size_t
- ptrdiff_t
- nullptr_t
- NULL
- max_align_t
- offsetof
- byte