阅读 169

C++ 修饰符类型

在C ++编程中,类型修饰符用于更改基本数据类型的含义。

C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。

下面列出了数据类型修饰符:

  • signed

  • unsigned

  • long

  • short

修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。

修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int

C++ 允许使用速记符号来声明无符号短整数无符号长整数。您可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。例如,下面的两个语句都声明了无符号整型变量。

unsigned x;unsigned int y;

为了理解 C++ 解释有符号整数和无符号整数修饰符之间的差别,我们来运行一下下面这个短程序:

示例

#include <iostream>using namespace std;
 /* 
 * 这个程序演示了有符号整数和无符号整数之间的差别
*/int main(){
   short int i;           // 有符号短整数   short unsigned int j;  // 无符号短整数 
   j = 50000;
 
   i = j;
   cout << i << " " << j;
 
   return 0;
}

当上面的程序运行时,会输出下列结果:

-15536 50000

上述结果中,无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。

这是一个类型修饰符说明列表:

数据类型大小含义
signed int4 字节
用于整数(等效于int)
unsigned int4 字节只能存储非负整数
short2 字节用于小整数(范围-32768至32767
long至少4字节用于大整数(等于long int)
unsigned long4 字节用于大的正整数或0(等于unsigned long int)
long long8 字节用于非常大的整数(等于long long int)。
unsigned long long8 字节用于非常大的正整数或0(等于unsigned long long int)
long double8字节用于大浮点数
signed char1 字节用于字符(保证范围-127到127
unsigned char1 字节用于字符(范围为0到255

short 类型修饰符

我们可以使用short的小整数(范围−32,767至+32,767)。

例如,

示例

// 小整数short a = 12345;

在这里,a是一个short整数变量。

注意: short等同于short int。

long 类型修饰符

如果我们需要存储一个大整数(范围为-2147483647至2147483647),则可以使用类型修饰符long。例如,

示例

// 大整数long b = 123456;

注意: long等同于long int。

long类型修饰符也可以与double变量一起使用。

示例

// 大浮点数long double c = 0.333333333333333333L;

注意:为了表示long double,我们使用L后缀。如果我们不使用后缀L,则将其double转换为该值long double(可能会导致数据丢失)。

long long

long可以重复两次以创建long long类型。此类型用于比long更大的数字。long long类型修饰符只能与int一起使用。

例如,

示例

// long long intlong long num = 12345678;

signed 和 unsigned 修饰符

有符号(signed)变量可以包含整数和负整数,包括。例如,

示例

// 正整数值signed int x = 23;// 负整数值signed int y = -13;// 0值整数signed int z = 0;

这里,

  • x持有一个正值整数

  • y持有一个负值整数

  • z持有零值整数

无符号变量(unsigned)只能容纳非负整数。例如,

示例

// 正值整数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,signed char和unsigned char。实际上,基本上只有两种类型:signed char和unsigned char。

这是因为即使char与标准C ++中的signed char或unsigned char不相同,不同的编译器也会根据自己的喜好将char视为signed char或unsigned char。

注意:当我们仅使用char而不是signed char或unsigned char时,此类型称为plain char(普通字符)

您可能已经猜到了,signed char可以存储正整数和负整数,而unsigned char只能存储正整数(包括0)。

signed char可以存储的整数值的保证范围是-127到127,而unsigned char的范围是0到255

示例

// 普通字符char plain_1 = 65;char plain_2 = 0;// 带负值的普通字符// 可能会导致某些编译器出现问题char plain_3 = -56;// signed charsigned char  sin_1 = 12;signed char  sin_2 = 0;signed char  sin_3 = -12;// unsigned charunsigned char  unsin_1 = -85;unsigned char  unsin_2 = 0;

这里,

  • plain_1 持有一个正值整数

  • plain_2 持有零值整数

  • sin_1 持有一个正值整数

  • sin_2 持有零值整数

  • sin_3 持有一个负值整数

  • unsin_1 持有一个负值整数

  • unsin_2 持有零值整数

注意:最好不要使用普通字符来执行数字操作;应使用signed char 或 unsigned char代替。纯字符应仅用于存储字符值。

C++ 中的类型限定符

类型限定符提供了变量的额外信息。

限定符含义
constconst 类型的对象在程序执行期间不能被修改改变。
volatile修饰符 volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。
restrict由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐