数值数据类型用于处理诸如整数(带符号和无符号)、浮点值和精度值之类的数字数据。
数值数据类型主要包括三种基本的数值数据类型,如下所示:
在本文中,我们将详细介绍所有数值数据类型及其子类型,并附上示例。
1. int 数据类型
int
数据类型简称整数,取值范围从 -2³¹ 到 (2³¹-1)。它占用内存中的 4 字节(即 32 位)。
语法
int 变量名;
进一步分类
(a) short int short int
用于较小的数字,只占用 2 字节(即 16 位)内存。它的取值范围从 -2¹? 到 (2¹?-1)。
语法
short int 变量名;
(b) long int long int
用于较大的数字,占用 4 字节(即 32 位)内存空间,依据编译器的不同,可能占用最多 8 字节(即 64 位)。
语法
long int 变量名;
(c) long long int long long int
用于更大的数字,占用 8 字节(即 64 位)内存空间,依据编译器的不同,可能占用最多 16 字节(即 128 位)。它的取值范围从 -2?³ 到 (2?³-1)。
语法
long long int 变量名;
(d) unsigned int unsigned int
用于存储仅非负值,占用与 int
数据类型相同的内存空间,即 4 字节(即 32 位)。它的取值范围从 0 到 (2³²-1)。
语法
unsigned int 变量名;
(e) unsigned short int unsigned short int
用于存储仅非负值,占用与 short int
数据类型相同的内存空间,即 2 字节(即 16 位)。它的取值范围从 0 到 (2¹?-1)。
语法
unsigned short int 变量名;
(f) unsigned long int unsigned long int
用于存储仅非负值,占用与 long int
数据类型相同的内存空间,即从 4 字节(即 32 位)到 8 字节(即 64 位)。
语法
unsigned long int 变量名;
(g) unsigned long long int unsigned long long int
用于存储仅非负值,占用与 long long int
数据类型相同的内存空间,即从 8 字节(即 64 位)到 16 字节(即 128 位)。它的取值范围从 0 到 (2??-1)。
语法
unsigned long long int 变量名;
示例
以下代码展示了所有派生的 int
数据类型的大小和使用方法:
#include <iostream>
using namespace std;
int main() {
int a = 16;
short int b = 3;
long int c = -32;
long long int d = 555;
unsigned short int e = 22;
unsigned int f = 33;
unsigned long int g = 888;
unsigned long long int h = 444444;
cout << "sizeof int datatype is: " << sizeof(a)
<< " and the number is: " << a << endl;
cout << "sizeof short int datatype is: "
<< sizeof(b) << " and the number is: " << b << endl;
cout << "sizeof long int datatype is: "
<< sizeof(c) << " and the number is: " << c << endl;
cout << "sizeof long long int datatype is: "
<< sizeof(d) << " and the number is: " << d << endl;
cout << "sizeof unsigned short int datatype is: "
<< sizeof(e) << " and the number is: " << e << endl;
cout << "sizeof unsigned int datatype is: "
<< sizeof(f) << " and the number is: " << f << endl;
cout << "sizeof unsigned long int datatype is: "
<< sizeof(g) << " and the number is: " << g << endl;
cout << "sizeof unsigned long long int datatype is: "
<< sizeof(h) << " and the number is: " << h << endl;
return 0;
}
输出
sizeof int datatype is: 4 and the number is: 16
sizeof short int datatype is: 2 and the number is: 3
sizeof long int datatype is: 4 and the number is: -32
sizeof long long int datatype is: 8 and the number is: 555
sizeof unsigned short int datatype is: 2 and the number is: 22
sizeof unsigned int datatype is: 4 and the number is: 33
sizeof unsigned long int datatype is: 8 and the number is: 888
sizeof unsigned long long int datatype is: 8 and the number is: 444444
2. float 数据类型
float
数据类型用于浮点数,即带有小数部分的数字。此数据类型占用 4 字节(即 32 位)的内存。
语法
float 元素名;
示例
以下代码展示了 float
数据类型的大小和使用方法:
#include <iostream>
using namespace std;
int main() {
float k = 1.120123;
cout << "sizeof float datatype is: " << sizeof(k) << " and the element is: " << k << endl;
return 0;
}
输出
sizeof float datatype is: 4 and the element is: 1.12012
3. double 数据类型
double
数据类型用于存储比 float
更精确的浮点数。此数据类型占用 8 字节(即 64 位)的内存。
语法
double 元素名;
double
数据类型进一步分类,占用更多内存并存储更精确的元素。
long double
从 double
派生的另一种数据类型是 long double
,它占用 16 字节(即 128 位)的内存空间。
语法
long double 元素名;
示例
以下代码展示了所有派生的 int
数据类型的大小和使用方法:
#include <iostream>
using namespace std;
int main() {
double m = 1.34000123;
long double n = 1.21312312421;
cout << "sizeof double datatype is: " << sizeof(m) << " and the element is: " << m << endl;
cout << "sizeof long double datatype is: " << sizeof(n) << " and the element is: " << n << endl;
return 0;
}
输出
sizeof double datatype is: 8 and the element is: 1.34
sizeof long double datatype is: 16 and the element is: 1.21312
4. 数值数据类型的显式转换
在 C++ 中,显式类型转换不会自动完成,你需要通过在括号中放置目标数据类型手动转换变量或表达式的类型。这告诉编译器将值转换为特定的目标数据类型。
示例
以下程序展示了数值数据类型从一种类型到另一种类型的显式转换:
#include <iostream>
using namespace std;
int main() {
double a = 6.551555;
cout << "value of a (int) is " << (int)a << endl;
cout << "value of a (float) is " << (float)a << endl;
cout << "value of a (double) is " << a << endl;
cout << "Value of a (long double) is " << (long double)a;
return 0;
}
输出
value of a (int) is 6
value of a (float) is 6.55156
value of a (double) is 6.55155
Value of a (long double) is 6.55155