03 七种基本的 C++ 数据类型以及枚举类型
目录
系列文章目录
前言
一、7种基本数据类型
1.基本数据类型介绍
2.带符号的数据类型
二、C++中的枚举类型
总结
C++中的数据类型指的是变量或常量能够存储的数据类型。它在c++中有很重要的作用,比如:
帮助编译器分配内存空间:不同的数据类型需要不同的内存空间来存储数据,因此定义变量时需要指定数据类型,以便编译器为变量分配适当的内存空间。
指定变量的范围:不同的数据类型有不同的范围,数据类型的选择决定了变量所能存储的数值范围。
指定变量的默认值:不同的数据类型有不同的默认值,数据类型的选择决定了变量未初始化情况下的默认值。
下面,我们一起来学习一下C++中的基本数据类型。
下面来简单的介绍一下这几种基本的数据类型
类型 | 关键字 |
---|---|
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
短整型 | short |
长整型 | long |
注解:
1. 整型(int):表示整数,可以是正数、负数或零。
2. 短整型(short):表示短整数,通常只有两个字节大小。
3. 长整型(long):表示长整数,通常有四个或八个字节大小。
4. 字符型(char):表示单个字符,可以是字母、数字、标点符号等。
5. 布尔型(bool):只有两个可能的取值,true 或 false。
6. 浮点型(float):表示实数,通常按照 IEEE 浮点数标准存储。
7. 双精度浮点型(double):表示双精度实数,通常用于精度要求较高的场合。
类型 | 位 | 范围 |
---|---|---|
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 | 2 个字节 | 0 到 65,535 |
signed short int | 2 个字节 | -32768 到 32767 |
long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 个字节 | 0 到 18,446,744,073,709,551,615 |
float | 4 个字节 | 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
long long | 8 个字节 | 双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围 |
long double | 16 个字节 | 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。 |
我们还可以使用代码,来查看每个类型的内存大小和取值的范围:
#include
#include
using namespace std;
int main()
{
cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "char: \t\t" << "所占字节数:" << sizeof(char);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "short: \t\t" << "所占字节数:" << sizeof(short);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t\t最小值:" << (numeric_limits::min)() << endl;
cout << "int: \t\t" << "所占字节数:" << sizeof(int);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "long: \t\t" << "所占字节数:" << sizeof(long);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "double: \t" << "所占字节数:" << sizeof(double);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "long double: \t" << "所占字节数:" << sizeof(long double);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "float: \t\t" << "所占字节数:" << sizeof(float);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);
cout << "\t最大值:" << (numeric_limits::max)();
cout << "\t最小值:" << (numeric_limits::min)() << endl;
cout << "string: \t" << "所占字节数:" << sizeof(string) << endl;
return 0;
}
输出结果如下:
bool: 所占字节数:1 最大值:1 最小值:0
char: 所占字节数:1 最大值: 最小值:€
signed char: 所占字节数:1 最大值: 最小值:€
unsigned char: 所占字节数:1 最大值: 最小值:
wchar_t: 所占字节数:2 最大值:65535 最小值:0
short: 所占字节数:2 最大值:32767 最小值:-32768
int: 所占字节数:4 最大值:2147483647 最小值:-2147483648
unsigned: 所占字节数:4 最大值:4294967295 最小值:0
long: 所占字节数:4 最大值:2147483647 最小值:-2147483648
unsigned long: 所占字节数:4 最大值:4294967295 最小值:0
double: 所占字节数:8 最大值:1.79769e+308 最小值:2.22507e-308
long double: 所占字节数:8 最大值:1.79769e+308 最小值:2.22507e-308
float: 所占字节数:4 最大值:3.40282e+38 最小值:1.17549e-38
size_t: 所占字节数:8 最大值:18446744073709551615 最小值:0
string: 所占字节数:40
我们可以从输出结果这很形象的看出每个类型的实际所占字节,和最大最小值。
这里代码有些同学可能看不懂,下面是一些解释:
上面的代码使用了模板类
numeric_limits
,它是C++标准库中提供的一个模板类,用于获取各种数值类型的相关信息。其中,
max
和min
是numeric_limits
类中的成员函数,用于获取当前类型的最大值和最小值。sizeof
是C++中的关键字,用于获取某个数据类型在内存中所占字节数。
\t
和\n
是转义字符,分别表示制表符和换行符。
<<
是C++中的流插入符,用于将数据插入输出流中。
cout
是C++标准库中的输出流对象,用于向标准输出设备(通常是控制台)输出信息。
C++中的枚举类型是一种用户自定义类型,它将一组常量定义为一个类型。枚举类型的定义使用关键字"enum",其语法如下:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;
如果枚举没有初始化, 即省掉"=整型常数", 则从第一个标识符开始。
enum EnumName {
value1,
value2,
...
};
其中,EnumName为枚举类型名称,value1、value2等为枚举常量,它们的值默认从0开始自增。可以在定义枚举类型时,为其中的某些常量指定具体的值,如下所示:
enum Color {
Red = 11,
Green = 22,
Blue = 33
};
枚举类型的常量可以直接使用枚举类型名称加上常量名,如下所示:
Color color = Red;
我们可以循环打印除Color中的值,代码如下:
#include
enum Color {
Red = 11,
Green = 22,
Blue = 33,
};
int main()
{
// 循环输出枚举类型的值
for (int i = Red; i <= Blue; i++)
{
switch (i)
{
case Red:
std::cout << "Red: " << Red << std::endl;
break;
case Green:
std::cout << "Green: " << Green << std::endl;
break;
case Blue:
std::cout << "Blue: " << Blue << std::endl;
break;
default:
break;
}
}
return 0;
}
输出结果是:
Red: 11
Green: 22
Blue: 33
以上就是今天要讲的内容,本文仅仅简单c++中的一些基本数据类型及其使用,重要的是理解,要想会用,我们还需要进行大量的练习。