常量定义

       

        常量是常数或代表固定不变值的名字。
  程序中如果想让变量的内容自初始化后一直保持不变,可以定义一个常量。
  例如,在圆面积计算中经常要用常数丌,此时,通过命名一个容易理解和记忆的名字来 改进程序的可读性,同时在定义中加关键字const,给它规定为常量性质,以帮助预防程序出错。
  如果在整个程序中的许多地方都要用到一个常数,那么,在这些地方的一个或多个地方 写错了这个值就会导致计算错误。 如果给常数取个名字,每处常数都以该名字代替,那么编 译器就能检查名字拼写错误, 避免常数值的不一致性。
  丌字符不属于C++语言的字符描述集,不能用来作C++中的名字。我们用pi来表示丌:
   const float pi=3.1415926;
  由于有效位的限制,在下面常量定义中,最后3位不起作用:
   const float pi=3.141592653;
  尽管等号后面的常数是double型的,但因为float常量只能存储7位有效位精度的实数,所以pi的实际值为3.141593(最后1位4舍5人)。 如果将常量pi的类型改为double型,则能全部接受上述10位数字。
  定义成const后的常量, 程序中对其只能读不能修改,从而可以防止该值被无意地修改。 由于不可修改,所以,常量定义时必须初始化。例如:
   const float pi;
   pi=3.1415926; //error
  常量名不能放在赋值语句的左边
  常量定义中初始化的值可以是一个常量表达式。常量在程序运行之前就已经知道了其值,所以,编译时就能求值。但表达式中不能含有某个函数。例如:
   const int size=100 * sizeof(int); //ok
   const int number=max(15,23);   //error
  因为sizeof不是函数, 而是C++的基本操作符,该表达式的值在编译之前能确定,所以第一个常量定义语句合法。第二个语句要求函数值,函数一般都要在程序开始运行时才能求值,该表达式不能在编译之前确定其值,所以是错误的。
一般来说,相同类型的变量和常量在内存中占有相同大小的空间。只不过常量不能通过常量名去修改其所处的内存空间,而变量却可以。
  

        ->关于#define
  在C中,另一种定义常量的方法是用编译预定义指令(#define)。例如:
   #define PI 3.1415926
  这条指令的格式是#define后面跟一个常量名再跟一串字符, 中间用空格隔开。由于它不是C++语句,所以行末不用分号。
  当程序被编译时,它要先被编译预处理。当预处理遇到#define指令时,就用数值3.1415926替换程序中所有的PI。
  尽管它具有常量的所有属性,但是,在编译预处理完成后,PI不属于C++程序中的名字了(全部被字串3.1415926所替代),所以它不是一个具有一定类型的常量名。随后的编译 无法发现由它引起的数据类型误用的错误。
  C++容许#define定义常量是为了兼容C,使C程序能在C++编译器中顺利通过。在C++编程中,常量定义都用const,不用#define。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值