c++ 常量
- 常量是固定值,在程序执行期间不会改变。
- 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值
- 常量的值在定义后不能进行修改
一、整数常量
可以是十进制【不带前缀】、八进制【0】或十六进制【0x 或 0X】的常量
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
212 // 合法的 215u // 合法的 0xFeeL // 合法的 078 // 非法的:8 不是八进制的数字 032UU // 非法的:不能重复后缀 85 // 十进制 0213 // 八进制 0x4b // 十六进制 30 // 整数 30u // 无符号整数 30l // 长整数 30ul // 无符号长整数
二、浮点常量
浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
- 当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。
- 当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 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 '\n' 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 = '\n';
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 后不能加分号,程序不会报错,但 计算会出错