基本数据类型
char | 1 个字节 | -128 到 127 或者 0 到 255 |
---|---|---|
unsigned char | 1 个字节 | 0 到 255 |
signed char | 1 个字节 | -128 到 127 |
int | 4 个字节 | -2147483648 到 2147483647 |
unsigned int | 4 个字节 | 0 到 4294967295 |
signed int | 4 个字节 | -2147483648 到 2147483647 |
short int | 2 个字节 | -32768 到 32767 |
unsigned short int | Range | 0 到 65,535 |
signed short int | Range | -32768 到 32767 |
long int | 4 个字节 | -2,147,483,647 到 2,147,483,647 |
signed long int | 4 个字节 | 与 long int 相同 |
unsigned long int | 4 个字节 | 0 到 4,294,967,295 |
float | 4 个字节 | +/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
long double | 8 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
wchar_t | 2 或 4 个字节 | 1 个宽字符 |
自定义数据类型
可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:
typedef int mynewtype; mynewtype data = 100;
枚举类型
枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。定义格式:枚举类型的定义格式为:
enum <类型名> {<枚举常量表>};
格式说明:
#include<iostream> #include<iomanip> using namespace std; int main(){ enum color_set {red,yellow,blue,white,black}; //声明枚举类型color color_set color; cout<< black <<endl; //按照顺序递增,默认是red=0,往后依次加一 结果输出4 }
#include<iostream> #include<iomanip> using namespace std; int main(){ enum color_set {red,yellow=2,blue,white,black}; //声明枚举类型color color_set color; cout<< black <<endl; //手动在定义的时候赋值,那么后面的使用所赋的值作为基础进行递增,结果输出5 }
enum enum-name { list of names } var-list; enum enum-name { list of names } ; enum-name var-list //两种方法是一样的
共同体
共用体(union)是一种数据格式,它能够存储不同的数据类型,但同时只能存储其中的一种类型,共用体的长度为其最大成员的长度。共用体的用途:当数据项使用两种或更多格式(但不会同时使用时) 。使几个不同类型的变量共同占用一段内存。
#include<iostream> #include<iomanip> using namespace std; union myunion{ int int_data; double double_data; }; int main(){ myunion myunion_obj; myunion_obj.int_data = 10; cout << myunion_obj.int_data << endl; //输出10 myunion_obj.double_data = 15.545678; cout << myunion_obj.double_data << endl; //输出15.545678 myunion_obj.int_data = 5; myunion_obj.double_data = 2000.5457877; cout << myunion_obj.int_data << endl; // 这里输出是-487028676, cout << myunion_obj.double_data << endl; //这里输出是2000.5457877 cout<<sizeof(myunion_obj)<<endl; //输出8,说明这个共同体对象只计算最大长度成员作为整体的,也说明占用的是同一内存 }