1.前言
在C语言中,数据有两种表现形式,即常量和变量,常量是指在程序运行过程中,其值不变的量,本文将对C语言中的常量类型进行梳理。
2.数值常量
数值常量可以简单的理解为数学里的常数。
(1)整型常量
整型常量对应数学里的整数,如1,2,0,-1,-2等。
(2)实型常量
实型常量对应数学里的实数,即有小数点的数值,如1.1,0.1,1.0等,这里1.0也是实型常量,因为它有小数点,有小数点就代表其精确度精确到小数点后,不属于整型常量。
实型常量有两种表现形式:十进制小数形式和指数形式。
十进制小数形式是由数字和小数点组成。
指数形式类似于数学中的科学计数法,如12.345e6代表12.345x106,而12.345e-6代表12.345x10-6,这里的e代表以10为底的指数,e也可以写作E。
3.字符常量
字符常量分为两种:普通字符和转义字符。
(1)普通字符是用单撇符号括起来的字符,如’a’、’A’、’1’、’?’等。
(2)转义字符是一类特殊的字符常量,它以反斜杠“\”开头,后面跟上一个或者多个字符,这些字符并不代表原本的意思,而是被“转义”成其他的意思,如’\n’并不代表字符常量’n’,而是代表着换行。
下面列出了所有的转义字符及其代表的含义:
转义字符 | 含义 | 解释 |
---|---|---|
\’ | 单撇符号’ | 输出单撇符号字符’ |
\” | 双撇符号” | 输出双撇符号字符” |
\? | 问号? | 输出问号字符? |
\\ | 反斜杠\ | 输出反斜杠字符\ |
\a | 警告alert | 产生声音或视觉信号 |
\b | 退格backspace | 将光标当前位置后退一个字符 |
\f | 换页form feed | 将光标当前位置移到下一页的开头 |
\n | 换行new line | 将光标当前位置移到下一行的开头 |
\r | 回车carriage return | 将光标当前位置移到本行的开头 |
\t | 水平制表符 | 将光标当前位置移到下一个Tab位置 |
\v | 垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\ddd | 与该八进制码对应的ASCII码 | 八进制码解码成二进制码所代表ASCII码表中的字符 |
\xhh | 与该十六进制码对应的ASCII码 | 十六进制码解码成二进制码所代表ASCII码表中的字符 |
4.字符串常量
字符串常量是用双撇号括起来的若干个字符,如”hello”、”123”等。当然也可以在双撇号里面只写一个字符,如”a”,虽然其只有一个字符,但这个也是一个字符串常量,因为它使用的是双撇号。字符串常量与字符常量的区别就是一个使用双撇号,一个使用单撇号。
5.符号常量
符号常量是用#define指令,指定一个符号名称代表一个常量。
如#define PI 3.14
在此定义后,该源文件从这一行开始,后面所有的PI都代表数值常量3.14。在以往的文章中,曾专门提到过以#开头的预处理指令,是指在编译之前会对其预编译,这段代码经过预编译后,该行之后所有的PI都会被替换成数值常量3.14,且并没有给PI分配存储空间,而是作为指令的一部分,也即是立即数。
6.总结
在C语言中,常量是在程序运行过程当中不变的量,分为数值常量、字符常量、字符串常量、符号常量等类型,需要仔细区分。