- 常量
- C语言中的常见的常量
- 1. 数值常量
- 实型常量
- 1. 小数形式
- 2. 指数形式
- 字符常量
- 1. 普通字符
- 2. 转义字符
- 字符串常量
- 1. 单个字符串常量
- 符号常量
- 1. #define
- 2. const
1. 数值常量
- 数值常量(整型常量,实型常量-> 小数形式和指数形式)
- 字符常量(普通字符,转义字符)
- 字符串常量
- 符号常量(#define const)
整型常量
- 整型常量分为二进制,八进制,十进制和十六进制
- 每个整型常量分为三部分: 前缀部分,数字部分,后缀部分.
| 进制 | 前缀部分 | 数字部分 | 后缀部分 |
|---|---|---|---|
| 二进制 | ob | 0~1 | u,l,ll |
| 八进制 | 0 | 0-7 | u,l,ll |
| 十进制 | 无 | 0-9 | ‘u,l,ll’ |
| 十六进制 | ox或0X | 0-9,a-f,A-F | u,l,ll |
- 后缀的即使 u (unsigned) 代表无符号的整数 l(long) 代表长整型, ll代表long long 长长整型
#includeint main() { int a = 0b10101u; // 无符号二进制数 long b = 0123l; // 8进制长整型,后面那个是小写的L,不是1,注意这里. long long c = 0x123Fll; // 16进制长整型 printf("a = %d, b = %lo, c= %llx",a,b,c); // 按照对应的占位符进行打印 return 0; }
结果:
- 实型常量又分为小数形式 和 指数形式
2. 指数形式小数形式分为三个部分: 整数部分,小数点,小数部分.
例如: 3.1415927,4.5f,.1314
其中f 后缀代表 float,用于区分double
.1314 等价于 0.1314
字符常量
- 指数形式的典型格式为xey
- 1e9,5.2e00000,5.2e-1,1.1e2,表示的数值是x * 10^y
1. 普通字符
- 字符常量可以是一个普通的字符,一个转义序列,或者是一个通用的字符.
- 每个字符都对应一个ASCII码值
2. 转义字符普通字符就是用单引号括引起来的单个字符
- 转义字符是用引号引起来,并且内容为斜杠+字符,例如n 代表换行,t代表制表符(可以理解为键盘上的tab键),\代表一个反斜杠,等等.
- number来代替一个字符,其中一个数字number代表一个八进制数,也可以用xhh来代表一个字符
#includeint main() { char a = 65; char b = '101'; // 八进制数,八进制直接是反斜杠加八进制数,没有标识符 char c = 'x41'; printf("%c %c %c n",a,b,c); return 0; }
结果:
- 字符串常量中允许有转义字符
- 字符串常量使用"" 双引号引起来
#includeint main() { char str[100] = "我要好好学习x43语言!"; printf("%s", str); return 0; }
结果:
利用#define预处理器可以定义一个常量如下:
#include#define FIOMAN "Love Hammer,Love Running!n" #define Hammer "Love Fioman n" int main() { printf(FIOMAN); printf("%s",Hammer); return 0; }
结果:
#define 就是一个预处理替换,会将代码中所有的被define定义的文本替换为后面的文本
2. const一个变量前面加上const,就表示这个变量是常量,在整个运行过程中都不能被修改
C语言中既然已经有了#define,为什么还需要const呢
原因有三点
- 预编译指令只是对值进行简单的替换,不能进行类型检查
- 可以保护被修饰的东西,防止意外修改,增强程序的健壮性
- 编译器通常不为普通的const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的一个常量,没有了存储与读内存的操作,增加效率



