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 int
long 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 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 持有零值整数

ASCII字符代码表

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

C++ 中的类型限定符

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

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

限定符 volatile 说明(参考下面两篇博文):

 volatile在C语言中的基本使用方法_volatile在c语言中的用法_ST小智的博客-CSDN博客

volatile用法详解(c语言)_volatile在c语言中的用法-CSDN博客 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值