c++"左值"和"右值"、常量定义、修饰符类型、存储类型

左值和右值

简言之,左值指的是变量/变量表达式(指向内存位置的表达式eg:1/2a+1/3a),右值指的是数值/数值表达式(存储在内存中某些地址的数值eg:2*3)。左值可以出现在赋值号的左边或者右边,右值只能出现在赋值号右边。

 

常量定义(字符常量和常变量)

c/c++中常量(通常定义成大写形式)有两种定义方式:

1、使用#define 预处理器

eg:#define PI 3.14

2、使用const关键字

eg:const int LENGTH=10;

 

修饰符类型

1、signed

2、unsigned

3、long

4、short

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

修饰符 signedunsigned 也可以作为 longshort 修饰符的前缀。例如:unsigned long int

C++ 允许使用速记符号来声明无符号短整数无符号长整数。您可以不写 int,只写单词 unsigned、shortunsigned、long,int 是隐含的。

 

类型限定符

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

 

存储类型

1、auto   根据初始化表达式自动推断被声明的变量的类型

2、register   用于定义存储在寄存器中而不是 RAM 中的局部变量,变量的最大尺寸等于寄存器的大小

3、static  static 有三种作用。第一种是保持局部变量的持久,static变量值初始化一次,声明周期为整个源程序。编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。第二种是限制全局变量的作用域,static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。第三种是使类的成员变量和成员函数独立于类的对象而存在,使他们属于类,而不是对象,不需要实例化就可以分配内存。static成员存放在程序的全局(静态)存储中,不算在类大小中。

4、extern  用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。

5、mutable  mutable 是为了突破 const 的限制而设置的。可以用来修饰一个类的成员变量。被 mutable 修饰的变量,将永远处于可变的状态,即使是 const 函数中也可以改变这个变量的值。

6、thread_local (C++11)  仅应用于数据声明和定义,thread_local 不能用于函数声明或定义。其声明的变量在创建线程时创建,并在销毁线程时销毁。每个使用该变量的线程都有其自己的变量副本。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值