c++ 常量

常量

  1. 常量是固定值,在程序执行期间不会改变。
  2. 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值
  3. 常量的值在定义后不能进行修改

一、整数常量

可以是十进制【不带前缀】、八进制【0】或十六进制【0x 或 0X】的常量

整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意

212         // 合法的
215u        // 合法的
0xFeeL      // 合法的
078         // 非法的:8 不是八进制的数字
032UU       // 非法的:不能重复后缀

85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数

二、浮点常量

浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

  1. 当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。
  2. 当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的
3.14159       // 合法的 
314159E-5L    // 合法的 
510E          // 非法的:不完整的指数
210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

三、布尔常量

  • true 值代表真。
  • false 值代表假。

不应把 true 的值看成 1,把 false 的值看成 0

四、字符常量

五、字符串常量

括在双引号 " " 中

包含:普通的字符、转义序列和通用的字符

六、定义常量

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

(1)#define 预处理器

#include <iostream>
using namespace std;
 
#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '
'
 
int main()
{
 
   int area;  
   
   area = LENGTH * WIDTH;
   cout << area;
   cout << NEWLINE;
   return 0;
}

输出:50

(2)const 关键字

#include <iostream>
using namespace std;
 
int main()
{
   const int  LENGTH = 10;
   const int  WIDTH  = 5;
   const char NEWLINE = '
';

  int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }

结果:50

把常量定义为     大写字母     形式,是一个很好的编程实践

补充:

1.定义成 const 后的常量,程序对其中只能读不能修改

所以在定义时必须赋初始值,要不然是错误的,除非这个变量是用extern修饰的外部变量

const int A=10;       //正确。
const int A;          //错误,没有赋初始值。
extern const int A;   //正确,使用extern的外部变量。

 2.

  • const 定义常量之后,是不能够改变的
  • 宏定义是可以取消的
定义: #define    N    21
取消: #undef    N    12

3.宏定义 #define 常量const的区别

 4.

const关键字应用

  • 欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;
  • 对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
  • 在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;
  • 对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量;
  • 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

5.

更多查看:const char*, char const*, char*const 的区别

 6.const 和 define定义常量时,两个数的范围不同

7.预处理 #define 后不能加分号,程序不会报错,但 计算会出错

原文地址:https://www.cnblogs.com/expedition/p/11313711.html