C语言中的常量(非常详细,附带实例)
常量就是其值在程序运行过程中不可以改变的量,包括 3 类,分别是数值型常量(包括整型常量和实型常量)、字符型常量和符号常量。
整型常量有十进制、八进制和十六进制 3 种表示形式:
整型常量可以是基本整型(int)、长整型(long int)或短整型(short int),还可以是无符号整型(unsigned)或有符号(signed)整型。在常量后加上 L(或 l),表示该常量是长整型,如 1314L;加上 U(或 u),表示该常量为无符号整型,如 520U。
无符号整型可以存放的正数范围比有符号整型大一倍,因为有符号整型的最高位用于储存符号,而无符号整型所有位全部同来存储数字:
上面示例的两个小数用指数形式表示如下:
书写实型常量时,可以在常量后加上 F 或 L 后缀(大小写通用)。F 表示该常量是 float 单精度类型,L 表示该常量为 long double 长双精度类型。例如:
如果不加后缀,则默认实型常量为 double 双精度类型。例如:
字符型常量包括两种:字符常量和字符串常量。
【实例】使用 putchar() 函数将多个字符常量依次输出,在控制台中显示“Find Day!”。
如果字符串中一个字符都没有,将其称作空串,此时字符串的长度为 0。
在 C语言中存储字符串常量时,系统会在字符串的末尾自动添加一个“\0”,作为字符串的结束标志。例如,字符串 "welcome" 在内存中的存储形式如下图所示。

图 1 “\0”为系统所加
【实例】使用 printf() 函数将字符串常量《静夜思》诗句在控制台输出显示。
字符常量和字符串常量的差别主要体现在以下几个方面。

图 2 字符串“F”
转义符号在字符常量中是一种特殊的字符,通常以反斜杠 “\” 开头,后面跟一个或几个字符。常用的转义字符及其含义如下表所示。
C语言整型常量
整型常量就是整型常数(没有小数部分),如 123、−456 等。整型常量有十进制、八进制和十六进制 3 种表示形式:
- 十进制:我们日常所见到的整数都是十进制形式的,如 365、75 等。十进制数使用 0~9 来表示所有数,递进关系为逢十进一。注意,除了 0 本身,其他十进制数不能以 0 开头。
- 八进制:使用 0~7 来表示所有的数,递进关系为逢八进一。八进制常量前要加上 0 作为前缀,如 0123、0432 等。
- 十六进制:使用 0~9 和字母 A~F(或 a~f)来表示所有的数,递进关系为逢十六进一。十六进制常量前要加上 0x 作为前缀,如 0x123、0x3ba4。
整型常量可以是基本整型(int)、长整型(long int)或短整型(short int),还可以是无符号整型(unsigned)或有符号(signed)整型。在常量后加上 L(或 l),表示该常量是长整型,如 1314L;加上 U(或 u),表示该常量为无符号整型,如 520U。
注意,整型常量所占的内存大小和数值范围取决于编译器。字长为 16 位的计算机中,基本整型为 16 位;字长为 32 位的计算机中,基本整型为 32 位。这里,8 位等于 1 字节。
无符号整型可以存放的正数范围比有符号整型大一倍,因为有符号整型的最高位用于储存符号,而无符号整型所有位全部同来存储数字:
- 短整型是 16 位的,无符号短整型的取值范围是 0~65535,有符号短整型的取值范围是 −32768~+32767。
- 长整型是 32 位的,无符号长整型的取值范围是 0~4294967295,有符号长整型的取值范围是 −2147483648~+2147483647。
- 16 位计算机中,基本整型的取值范围和短整型相同;32 位及以上计算机中,基本整型的取值范围和长整型相同。
C语言实型常量
实型也称为浮点型,由整数和小数两部分组成,并用十进制的小数点进行分隔。表示实数的方式有小数和指数两种。1) 小数形式
小数表示方法就是使用十进制的小数方法描述实型。例如:123.45; 0.5458;
2) 指数形式(科学计数形式)
当实型数非常大或非常小时,可使用指数形式来表示。使用字母 e 或者 E 表示指数形式,如 45e2 表示的是 45×10^2,即 4500,45e-2 表示的是 45×10^−2,即 0.45。上面示例的两个小数用指数形式表示如下:
1.2345e2; 5.458e-1;
书写实型常量时,可以在常量后加上 F 或 L 后缀(大小写通用)。F 表示该常量是 float 单精度类型,L 表示该常量为 long double 长双精度类型。例如:
1.2345e2F; // 单精度类型 5.458e-1L; // 长双精度类型
如果不加后缀,则默认实型常量为 double 双精度类型。例如:
1.2345e2; // 默认为双精度类型
C语言字符型常量
字符型常量与整型、实型有所不同,需要使用定界符进行限制。字符型常量包括两种:字符常量和字符串常量。
1) 字符常量
使用一对单直撇引号(' ')括起来的字符就是字符常量,如 'A'、'#'、'b' 等:- 字符常量只能包括一个字符,不能是字符串。例如,'A' 是正确的,但用 'AB' 来表示字符常量就是错误的。
- 字符常量是区分大小写的。例如,'A' 和 'a' 代表的是不同的字符常量。
- ' '代表的是定界符,不属于字符常量的一部分。
【实例】使用 putchar() 函数将多个字符常量依次输出,在控制台中显示“Find Day!”。
#include <stdio.h> int main() { putchar('F'); /*输出字符常量 F*/ putchar('i'); /*输出字符常量 i*/ putchar('n'); /*输出字符常量 n*/ putchar('d'); /*输出字符常量 d*/ putchar('\0'); /*字符结束标志*/ putchar('D'); /*输出字符常量 D*/ putchar('a'); /*输出字符常量 a*/ putchar('y'); /*输出字符常量 y*/ putchar('!'); /*输出字符常量!*/ putchar('\n'); /*进行换行*/ return 0; }运行程序,显示效果为:
Find Day!
2) 字符串常量
字符串常量是用一对双直撇引号(" ")括起来的若干字符序列。例如,"Have a good day! " 和 "beautiful day" 即为字符串常量。如果字符串中一个字符都没有,将其称作空串,此时字符串的长度为 0。
在 C语言中存储字符串常量时,系统会在字符串的末尾自动添加一个“\0”,作为字符串的结束标志。例如,字符串 "welcome" 在内存中的存储形式如下图所示。

图 1 “\0”为系统所加
【实例】使用 printf() 函数将字符串常量《静夜思》诗句在控制台输出显示。
#include <stdio.h> /*包含头文件*/ int main() { printf("窗前明月光\n"); /*输出字符串*/ printf("疑是地上霜\n"); printf("举头望明月\n"); printf("低头思故乡\n"); return 0; /*程序结束*/ }运行程序,显示效果为:
窗前明月光
疑是地上霜
举头望明月
低头思故乡
字符常量和字符串常量的差别主要体现在以下几个方面。
- 定界符不同。字符常量使用的是' ',而字符串常量使用的是" "。
- 长度不同。字符常量只能有一个字符,长度为 1。字符串常量的长度可以是 0,也可以是任意值。即使字符串常量中的字符只有 1 个,长度也不是 1,而是 2。例如,字符串常量"F",其在内存中的存储情况如图 2 所示(因为系统自动添加了结束字符 “\0”,所以其长度为 2)。
- 存储方式不同。字符常量中存储的是字符的 ASCII 码值;字符串常量不仅要存储有效的字符,还要存储结尾处的结束标志 “\0”。

图 2 字符串“F”
C语言转义字符
前面实例中能看到 “\n” 符号,但输出结果中却不显示该符号,只是进行了换行操作,这种符号称为转义符号。转义符号在字符常量中是一种特殊的字符,通常以反斜杠 “\” 开头,后面跟一个或几个字符。常用的转义字符及其含义如下表所示。
转义字符 | 意义 | 转义字符 | 意义 |
---|---|---|---|
\n | 回车换行 | \ | 反斜杠 “\” |
\t | 横向跳到下一制表位置 | \' | 单引号符 |
\v | 竖向跳格 | \a | 鸣铃 |
\b | 退格 | \ddd | 1~3 位八进制数所代表的字符 |
\r | 回车 | \xhh | 1~2 位十六进制数所代表的字符 |
\f | 走纸换页 |
C语言符号常量
C语言程序中,可以使用符号名来代替固定的常量值。例如使用符号常量来表示一年有多少个小时(一年按 365 天计算):#include <stdio.h> #define HOUR 365*24 /*定义符号常量 HOUR*/ int main() { int h,result; /*定义变量*/ printf("请输入小时:"); /*提示输入信息*/ scanf("%d",&h); /*输入数据*/ result=h/(HOUR); /*进行计算*/ printf("一共有%d年\n",result); /*显示结果*/ return 0; /*程序结束*/ }运行程序,显示效果为:
请输入小时:356265
一共有40年