在 C++ 编程中,**类型修饰符**用于改变基本 数据类型 的含义。
C++ 中有四种类型修饰符
short
long
signed
unsigned
以下是简要总结
数据类型 | 大小(以字节为单位) | 含义 |
---|---|---|
有符号整型 |
4 | 用于整数(等同于 int )。 |
无符号整型 |
4 | 只能存储非负整数。 |
short |
2 | 用于小整数。 范围:-32768 至 32767 |
long |
至少 4 | 用于大整数。 等同于 long int 。 |
无符号长整型 |
4 | 用于大的正整数或 0。 等同于 unsigned long int 。 |
long long |
8 | 用于非常大的整数。 等同于 long long int 。 |
unsigned long long |
8 | 用于非常大的正整数或 0。 等同于 unsigned long long int 。 |
long double |
8 | 用于大的浮点数。 |
有符号字符 |
1 | 用于字符。 保证范围 -127 至 127。 |
无符号字符 |
1 | 用于字符。 范围 0 至 255。 |
short 类型修饰符
我们可以使用 short
来表示小整数(范围在 −32,767 到 32,767 之间)。例如,
// small integer
short a = 12345;
在此,a 是一个 short
整型变量。
注意: short
等同于 short int
。
long 类型修饰符
如果我们想存储一个大整数(范围在 -2147483647 到 2147483647 之间),我们可以使用类型说明符 long
。例如,
// large integer
long b = 123456;
注意: long
等同于 long int
。
long 类型修饰符也可以与 double
变量一起使用。
// large floating-point number
long double c = 0.333333333333333333L;
注意: 为了表示 long double
,我们使用 L
后缀。如果我们不使用后缀 L
,它是一个 double
值被转换为 long double
(这可能会导致数据丢失)。
long long
long
可以重复两次以创建 long long
类型。此类型用于比 long
更大的数字。long long
类型修饰符只能与 int
一起使用。
例如,
// long long int
long long num = 12345678;
signed 和 unsigned 修饰符
Signed 变量可以同时容纳正数和负数整数,包括零。例如,
// positive valued integer
signed int x = 23;
// negative valued integer
signed int y = -13;
// zero-valued integer
signed int z = 0;
这里,
- x 存储一个正值整数
- y 存储一个负值整数
- z 存储一个零值整数
注意
- 默认情况下,整数是
signed
的。因此,我们可以直接使用int
而不是signed int
。 signed
和unsigned
只能与int
和char
类型一起使用。
unsigned 变量只能存储非负整数值。例如,
// positive valued integer
unsigned int x = 2;
unsigned int y = 0;
这里,
- x 存储一个正值整数
- y 存储零
通常,int
变量可以存储的范围是从 -2,147,483,648 到 2,147,483,647。
而 unsigned int
变量可以存储的范围是从 0 到 4,294,967,295。
signed, unsigned 和 plain char
C++ 有 3 种不同的 char
类型
char
有符号字符
无符号字符
实际上,基本只有 2 种类型
signed char
(保证范围:-127 至 127)unsigned char
(保证范围:0 至 256)
这是因为不同的编译器根据自己的偏好将 char
处理为 signed char
或 unsigned char
。
注意事项
- 在标准 C++ 中,
char
与signed char
或unsigned char
不同。为了实用性,编译器会忽略这一点。 - 当我们只使用
char
而不是它的signed
或unsigned
变体时,这种类型被称为plain char。
正如你可能猜到的,signed char
可以存储正负整数,而 unsigned char
只能存储正整数(包括 0)。
// plain char
char plain_1 = 65;
char plain_2 = 0;
// plain char with negative value
// might cause problems with some compilers
char plain_3 = -56;
// signed char
signed char sin_1 = 12;
signed char sin_2 = 0;
signed char sin_3 = -12;
// unsigned char
unsigned char unsin_1 = 85;
unsigned char unsin_2 = 0;
这里,
- plain_1 存储一个正值整数
- plain_2 存储一个零值整数
- sin_1 存储一个正值整数
- sin_2 存储一个零值整数
- sin_3 存储一个负值整数
- unsin_1 存储一个正值整数
- unsin_2 存储一个零值整数
注意: 最好不要使用 plain char 进行数值运算;应改用 signed char
或 unsigned char
。Plain char 仅应用于存储字符值。