区别于Python,C++是静态类型语言,在编译时执行类型检查。结果是程序中使用某个名字之前,必须先告知编译器该名字的类型。
2.1 基本内置类型
C++定义了一组表示整数、浮点数、单个字符和布尔值的算术类型,另外还定义了一种称为void的特殊类型。void类型没有对应的值,仅在有限的一些情况下,通常用作无返回函数的返回类型。
2.1.1 整型
表示整数、字符和布尔值的算术类型合称为整型(integral type)。
字符类型有两种:char和wchar_t。char类型保证了有足够的空间,能够存储机器基本字符集中任何字符对应的数值,因此,char类型通常是单个机器字节(byte)。wchar_t类型用于扩展字符集,比如汉字和日语,这些字符集中的一些字符不能用单个char表示。
内置类型的机器级表示
通常将8位的块作为一个字节,32位或4个字节作为一个“字”(word)。
大多数计算机将存储器中的每一个字节和一个称为地址的数关联起来。
要让地址为736425的字节具有意义,必须要知道存储在该地址的值的类型。一旦知道了该地址的值的类型,就知道了表示该类型的值需要多少位和如何解释这些位。
short类型为半个机器字(word)长,int类型为一个机器字长,而long类型为一个或两个机器长。
1. 带符号和无符号类型
除了bool类型外,整型可以是带符号的(signed),也可以是无符号的(unsigned)。
整型int、short和long都默认为带符号型。要获得无符号型则必须指定该类型为unsigned。
char有三种不同的类型:普通char、unsigned char和signed char。虽然char有三种不同的类型,但只有两种表示方式。可以使用unsigned char或signed char表示char类型。
2. 整型值的表示
无符号型中,所有的位都表示数值。
3. 整型的赋值
C++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。
赋值时是取该值对该类型取值数目求模后的值。
2.1.2 浮点型
类型float、double和long double分别表示单精度浮点数、双精度浮点数和扩展精度浮点数。一般float类型用一个字(32位)来表示,double类型用两个字(63位)来表示,long double类型用三个或四个字(96或128位)来表示。