1. 整形
整形有4种:int、short(16位)、long(32位)、longlong(64位),每种都有signed(有符号,默认)、unsigned(无符号)两种。有符号整数可以表示非负整数,也可以表示负整数;无符号整数只能表示非负整数。
2. 字符型
字符型有Char(8位)、wchat_t(16位)、char16_t(16位unicode)、char32_t(32位Unicode)四种
3. 布尔型
Bool 逻辑类型,值为true或者false
4. 空类型void
用void定义的类型,不能用于普通变量的声明,只能用于指针型变量,函数参数和函数返回值。
5. 浮点型
Float(32位单精度浮点数):表示范围为-27~+27-1
double(64位双精度浮点数):表示范围为-210~+210-1
6. 指针类型
指针定义用<类型>*<指针变量>表示,用来描述内存地址,并通过提供指针操作来实现与内存相关的程序功能
7. 数组类型
数组类型是一种有固定多个同类型的元素按一定次序所构成的数据类型
其中一位数组用 数据类型 数组名[常量表达式] 方式表示,
二维数组用 *数据类型 数组名[常量表达式1][常量表达式2]*方式表示。
访问时注意下标是否越界,不能超出常量-1的值。
8. 结构体类型struct
结构体是由一系列具有相同类型或者不同类型的数据构成的数据集合
定义为:struct 名称{
数据类型 变量名1;
数据类型 变量名2;
……
数据类型 变量名n;
}结构体变量名;
系统会给结构体中的每一个变量都分配相应的内存。结构体也有数组形式,且可以相互嵌套
9. 联合体类型union
联合体的使用方式和结构体及普通变量类似
定义为:union 名称{
类型变量符 变量名;
…
类型变量符 变量名;
};
在联合体中,所有的成员变量共享一块内存空间。该内存空间是其成员变量中占字节数最多的变量所占用的内存空间,并且所有的成员变量共用这一块内存空间,因此联合体中所有成员变量地址是一样的
10. 枚举类型enum
枚举类型(enumeration)是C是由用户定义的若干枚举常量的集合,可定义一个只有几种可能值的变量,变量的值只能在列举出来的值的范围内。
定义为:enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
标识符[=整型常数],
……
标识符[=整型常数],
}枚举变量
类型转换
一、在c++中的数据类型转换一般有:
1、将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换
2、表达式中包含不同的类型时,c++将对值进行转换
3、将参数传递给函数时,c++将对值进行转换
二、在进行数据类型转换时的注意要点:
1、将小的数据类型转化为大的数据类型,不会出现问题,一般只是转化后所占用的字节更多了,但是要将大的数据类型转化为小的数据类型的话,就会造成数据的丢失。
2、将较大的浮点数转化为较小的浮点数,如double转化为float ,这会造成精度(有效数位)降低,值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。
3、将浮点类型转换为整型,这会造成小数部分丢失,原来的值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。
4、当运算涉及到两种数据类型时,一般是较小的类型将被转换为较大的类型。
三、强制类型转换:
1、(类型名) 值
2、值 (类型名)
c、static_cast<>
可以将值从一种数值类型转换为另外一种数据类型,格式为: static_cast<类型名> (值)
移位操作
1.有符号数据移位
int、char、short、long
负数左移:符号位为1,其他位左移
正数左移:所有位左移,即 <<
负数右移:取绝对值,然后右移,再取相反数
正数右移:所有位右移,即 >>
2.无符号数据移位
左移:<<
右移:>>
3、不可直接移位的数据类型
double、float、bool、long double