C++中的变量与常量

一,变量

一,变量的类型与基本操作

变量是由C++有效类型创建申请的一块存储区域的名称,它的存储区域大小由类型决定,比如 int类型的大小是4个字节,那么系统就会为int类型创建的变量申请4个字节的内存变量,可以 用来存储这个范围的数据。可以通过运算来进行操作。此时值得注意的是,单精度类型(float)占四个字节,其中第1位是符号位,中间8位是指数位,后23位是小数位。双精度类型(double)则是第1位是符号位,中间11位是指数位,后面52位是小数位。

变量的名称由字母、数字和下划线字符组成。它必须以字母或下划线开头,且区分大小写,因为 C++ 是大小写敏感的。变量名只是一个标识符,不占用内存,在编译时转换成变量的地址存放在寄存器中。

变量的声明:

变量类型 变量名;

可以在创建时用=进行初始化,也可以在后面赋值。

这里引入左值和右值的概念,左值是是一个地址值,可以用来改变里面的数据,所以可以用来被赋值,放在赋值符号的右边。当然左值也可以放在赋值符号的右边,用来取地址里的值。右值是一个符号或者常量,会在编译时复制地址里面的数据到寄存器中。

需要主义的是C/C++并非安全性的语言,在对变量进行操作时有发生数据溢出的情况,溢出分为两种:

上溢:即两个正数相加的结果是负数;

下溢:即两个负数相加的结果为正数;

发生数据溢出的情况是由于在对数据进行操作时,符号位与数据是一起计算的,所以数据进位到符号位改变了符号位的值便发生了溢出现象。计算机对数据溢出根据数据类型采用截断的方式处理。

二,变量的作用域

通常我们可以在三个地方定义变量,所以变量的前缀也有所区别:

  • 局部变量,在一个函数内部或者一片代码块中定义的变量;

  • 形式参数变量,即在函数定义时作为参数被定义的变量;

  • 全局变量,在所有函数外部定义的变量;

函数参数不必多说,局部变量则是只在他的定义的函数域或代码域里起作用,全局变量的作用域是整个程序,即所有的源文件。在申请变量是如果没有初始化,系统会默认初始化为0。如果在函数内部定义一个与全局变量同名的变量,这个函数中会使用这个局部变量的值。

局部变量的值存储在动态存储区,全局变量的值存储在静态存储区。

二,常量

常量在就是程序执行中不可以改变的量,它可以是任意的基本数据类型,常量只能在定义的时候初始化。

一般我们用两种方法来定义常量:

  • 使用 #define 预处理器。
  • 使用 const 关键字。

#define是在预编译的时候起作用,它会在遇到我们定义的宏用宏里面的内容来直接替换(此时要注意代码里的其他修饰符以免出错)。同时我们也可以用宏来实现一些简单的运算。下面定义一个简单的宏。

#define PI  3.1415926

const  实在程序运行时起作用,在定义变量时前缀加上const便可以把它变成常量。例如:

const int i;

#define和const给有优缺点

  • define是一个常量值,并不带数据类型,而const是带类型的;
  • 由于#define是在预编译阶段起作用,它也不能进行调试。
  • const不能重定义,而#define可以通过#undef取消某个符号的定义进行定义。
  • define可以用来防止头文件重复引用,而const不能。
  • const会为常量申请空间,#define只在代码区占空间。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值