
常量:字面常量和符号常量。字面常量的值就是字面本身。如整数25。
符号(标识符)常量:定义时为它赋值,以后不允许被改变。
在定义枚举类型时,定义体中的标识符都是符号常量,在C语言系统内部定义有符号常量NULL,它的值为整数值0。
1.字面常量
字面常量又分为整数常量、实数常量、字符常量、字符串常量等四种。
(1)整数常量:十进制、八进制和十六进制三种。
十进制:第一个数字非0的正整数或负整数,如1、25、-100、3270等。
八进制:第一个字符为0、第二个及以后为八进制数字0-7的正整数。如023、074等。八进制采用逢8进1,每一位的权值为8的若干次方。
如八进制数023对应的十进制整数为19,又如0345对应的十进制整数为229。
十六进制:前两个字符为0x或0X,后面为十六进制数字的正整数。十六进制采用逢16进1,并且具有16个数字符号,前10个数字符号借用十进制的0-9,后6个数字符号借用英文字母a-f(A-F)。如十六进制数0x23的十进制值为35;0Xa5c的十进制值为为12+80+2560=2652。
字面整数常量的数据类型:当一个整数常量属于int类型的表示范围时,则是一个int类型的整数,若超出int类型的表示范围,则是一个double类型的双精度数。
小写或大写字母u,则为unsigned int的整数
小写或大写字母l,则为long int类型的长整数。如25 25u 25L。
(2)实数常量:只有十进制表示,又分为定点和浮点两种表示方法。
定点表示方法:带小数点不带指数的表示方法。如12.0、-3.56、0.06等。
浮点表示方法:在定点表示的基础上,再添加有指数部分的表示方法。指数部分用小写或大写字母e表示幂的底数10,幂的指数紧跟在字母e之后。如2.45e3,其表示值是2.45*103;-30E-4,表示值是30.0*10-4。
规范化的浮点表示方法:若在浮点数的定点部分(尾数部分),其小数点前只有一位不为0的数字。如3.05E-8对应的数值为3.05*10-8。如32.5e6改写为3.25e7就为规范了,-0.024e5改写为-2.4e3就规范了。
字面实数常量的类型确定:对于任一个实数常量,认为是双精度double类型的。
小写或大写字符f,是单精度float类型的常量。如2.54 2.54f。又如2.54e3为双精度类型,则2.54e3F则为单精度类型。
(3)字符常量:就是一个ASCII码字符,为了区别于数值或变量表示,必须在字符两边用单引号括起来。
字符常量分为一般字符和转义字符两种。当单引号内只有一个字符时,则为一般(普通、可打印)字符表示,如a、5、+、G等。当单引号内包含有两个或两个以上字符,并且第1个字符为反斜线时,则为转义字符表示。如\n表示打印输出时的换行控制;\0表示空字符,输出它时不起任何作用;\\也是一个转义字符。
在转义字符表示中,其反斜线后面还允许使用3为八进制整数或以小写字母x开始的2位十六进制整数。如\075;又如\x75,表示字符u。
(4)字符串常量:就是用双引号括起来的一串字符,简称为字符串。如"%d\n";又如"长×宽=面积\n"。
2.符号常量
第1种是通过使用#define编译预处理命令,第2种是通过使用const常量定义语句,第3种是通过使用enum枚举类型定义语句。
(1)使用#define预处理定义命令
例如:#define PI 3.14159
又如:#define END -100 表达式END+20的值80。
(2)使用const常量定义语句
例如:const int MM=10;
又如:const double PI=3.14159; // r*r*PI的值就是圆的面积。
(3)在枚举类型中定义的每个枚举值都是符号常量
例如:enum place{beg=-1, cur=0, end=1};
使用符号常量的好处:能够增强程序的可读性、安全性和易修改性。