C语言 | 常量与只读变量
一 常量的分类
(一)数值型常量
1.整型常量
整型常量是有且仅包含八进制、十六进制、十进制三种进制的整型常数,按照数值范围大小分为长整型和短整型。长整型和短整型各自又可分为有符号整型和无符号整型。
各进制的表达示例和无符号短整型数值范围如表T1所示。当数值大小超过短整型数值范围时,必须用长整型来表示,在数值后缀L或l。
| 进制 | 表达实例 | 数值范围 | 备注 |
|---|---|---|---|
| 八进制 | 011 0277777L |
[0,0177777] | 必须以0作为前缀 |
| 十进制 | 269 75535L |
[0,65535] | 没有前缀 |
| 十六进制 | 0XAB 0X1FFFFL |
[0x0,0xFFFF] | 必须以0X或0x作为前缀 |
注:表达实例中的整型均为无符号整型,此处省略后缀U或u。
T1.整型常数的分类、表达实例和数值范围
- 不加限定的情况下,计算机默认整型是有符号整型。如果要表达无符号整型,需要后缀
U或u; - 八进制数和十六进制数极少用于表达有符号整型。表达有符号整型常用十进制,十进制有符号短整型的范围是[-32768,32767],超出该范围时也应当用长整型的方式表达(后缀
L或l)。
2.实型常量(浮点型常量)
实型常量(浮点型常量)的表达形式有且仅包含十进制数形式、指数形式。例如:0.0 -2.3;56e5 28E3等。
用指数形式表达时有如下规定:
e或E前必须有数字;e或E后的指数必须为整数。
(二)字符型常量
1.字符常量
使用单引号''括起单个字符称为字符常量,例如'A' '@'。特殊地,单引号内以反斜杠\前缀的字符称为转义字符。常用转义字符如表T2所示。
单击此处查看表T2
| 转义字符 | 含义 |
|---|---|
| \n | 换行 |
| \t | 水平制表 |
| \v | 垂直制表(影响打印机执行操作) |
| \b | 退格 |
| \r | 回车 |
| \f | 换页(影响打印机执行操作) |
| \\ | 反斜杠符 |
| \’ | 单引号符 |
| \" | 双引号符 |
| \? | 在书写连续多个问号时使用,防止他们被解析成三字母 |
| \a | 鸣铃 |
| \ddd | 1-3位八进制数所代表的字符,遵循ASCII码 |
| \xhh | 1-2位十六进制数所代表的字符,遵循ASCII码 |
T2.常用转义字符表
2.字符串常量
使用双引号""括起若干个字符称为字符串常量。存储时,系统会自动在其末尾添加\0作为结束标志。
""也是字符串,其长度为0,称为空串;- 结束标志
'\0'源于转义字符'\ddd',它在ASCII码表中对应BLANK/NULL。
结束标志的存在非常重要,下例指出了其重要性:
1 |
|
进一步研究发现,arr2因为缺少结束标志,在格式化输出的过程中,当字符'c'输出后,将在其后随机生成一个字符,直至随机生成的字符是结束标志'\0'。
(三)符号常量
使用符号代替常量值。它使用宏定义命令#define来定义:
1 |
(四)枚举常量
枚举常量使用关键字enum来定义:
1 | enum Color |
也可以自定义常量值。除非自定义,否则常量值总是递增的。
1 | enum Color |
二 与只读变量的区别
只读变量使用const来定义:
1 | const int PI = 3.14; |
只读变量是变量添加关键字const构成的,它和其它变量都存放在一个普通的区域,但是由编译器限定不允许被修改。而常量则存放在只读区域。他们有着本质的区别。下例将这样的区别更形象地体现。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 晓!
评论
