C语言的常量

下面介绍C语言常量
常量是在程序执行过程中,其值不发生改变的量,分为直接常量和符号常量两种。
直接常量
直接常量又分为整型常量,实型常量,字符型常量和字符串常量。

1. 整型常量
整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制和十六进制表示。
八进制表示:由数字0~9,正、负符号组成,如369,-663等;
十进制表示:以o为前缀,其后由数字0~7组成,如0163,036等;八进制数一般是无符号数。如0192,-011都是不合法的八进制常量。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A–Z(字母大小写均可)组成,如0x12cd,0X6Fa等。十六进制数一般是无符号数。
注意:
(1)在一个整型常量后加一个字母u或U,认为是unsigned int 型,如246U.
(2)在一个整型常量后加一个字母l或L,认为是long int 型,如12L。
2.实型常量
实型常量即实数,又称为浮点数。C语言中,实数只能用十进制数表示,实数的表示方法有两种:小数形式和指数形式。
(1)小数形式:由整数部分、小数点和小数点部分组成,当整数部分或小数部分为0时可以省略不写,但是小数点不可以省略。如12.345,3.,-.123等均为正确的实数。
(2)指数形式:由尾数部分,字母E或e和指数部分组成,格式为:±尾数E指数。
如1.23E-2、3.14E+3等,它们表示的数值分别为0.0123、3140.00.
注意:
(1)以小数形式表示实数时,必须有小数点,并且小数点的前、后至一边要有数字。
(2)以指数形式表示实数时,字母E或e的前后必须有数字,并且指数指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。
在C语言中,实型常量默认为是double型的实数,如果在数的后面加字母f或F(如 1.65f、654.87F),则认为是float型的实数。
3.字符型常量
字符常量指单个字符,用一对双引号及其括号所括起的字符表示。如’a’、‘B’、‘=’、‘&’、‘?’等都是合法的字符常量。在C语言中,字符常量有以下特点:
(1)字符常量只能用括号括起来,不能用双引号或其它括号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符可以是ASCII字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCII码值按升序连续排列。如小写字母的ASCII码大于大写字母的ASCII码,大写字母的ASCII码大于数字的ASCII码。
使用字符常量时,每个字符在内存中占用一个字节,用于存储他的ASCII码值。所以C语言中的字符常量具有数值特征,可以像整数一样参与运算,此时相当于对字符的ASCII码值进行运算。
如4和‘4’是不同的,‘4’+1的值是53,因为‘4’的ASCII码值是52,字符‘a’的ASCII码是97,则’a’+1=98,对应于字符‘b’。这是因为字母’a’~‘z’的ASCII码按升序连续排列,字符‘a’的ASCII码值加1,就是字符’b’的ASCII码值。
另外,对于控制符(如回车,换行等)与不可见字符,在C语言中通过转义字符来表示。转义字符是用’\‘开头后面加上一个字符或用八进制、十六进制表示的ASII码值组成。‘'的作用是改变其后面的字符或ASCII码值的原有意义,转义为另外的的含义。
常见的转义字符如表:

转义字符|转义功能 |ASCII码值
\0 |空字符 |0
\a | 响铃 |7
\b |退格 |8
\t |水平制表符|9
\n |回车换行 |10
\v |竖向跳格 |11
\f |换页 |12
\r |回车 |13
\" |双引号 |34
\’ |单引号 |39
\? |问号 |63
\ |反斜线 |92
\ddd |1~3位八进制所代表的字符|
\xhh |1~2位十六进制所代表的字符|
说明:
转义字符形式上由多个字符组成,但它是一个字符常量,只代表一个字符。转义字符的使用方法与一般字符常量的用法相同。

#include<stdio.h>
int main()
{
char b,c,d,e;
b='\43';
c='\103';
d='\x2a';
e='\x41';
printf("b=%c,c=%c,d=%c,e=%c\n",b,c,d,e);
printf("\"good\40morning!\b\"!\n");
printf("\123456");
return 0;
}

运行结果
4.字符串常量
字符串常量是由一对双引号”“括起来的零个或多个字符序列,如:“Hello world”。
字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等汉字符号。如:”china"、”你好Visual C"、”\t Visual C“等。字符串中还可以使用空字符,如:”“表示空串,即不包含任何字符。
字符串常量在内存中占用一段连续的存储单元,系统自动在字符串的尾部加上’\0’作为字符串的结束标志,因此,n个字符组成的字符串,在内存中占用n+1个字节空间。可以使用sizeof运算符来计算字符串占用的内存空间大小。
如字符串常量”Hello World“占用12个字节的内存空间:
存储如图所示
字符串的长度等于该字符串中所包含的有效字符个数,如" Hello World"的长度为10。在字符串中如遇到‘\0’则认为该字符串结束。如”Hello\0World"的长度为5。如果字符串中有转义字符,则转义字符可以作为一个字符,如:“Hello World\t"的长度为11。也可以使用strlen()函数来计算字符串长度。
需要注意的是:
字符常量和字符串常量在内存中的存储情况是不同的,如‘6’在内存中占1个字节,存储的是ASCII码,而”6“在内存中占2个字节,一个字节存储‘6’,另一个字节存储‘\0’。可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予给一个字符常量,在C语言中,由于没有提供字符串类型的变量,字符串一般用字符数组来解决。关于数组我在后面会介绍。
符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用前必须先定义,一般形式为:#define 标识符 常量值
其中#define是一条编译预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值,该标识符称为符号常量。一个#define命令只能定义一个符号常量,若要定义多个符号常量,需要使用多个#define命令。
来看个例子:

#include<stdio.h>
#define PRICE 20
int main()
{
int num,total;
num=10;
total=num*PRICE;
printf("总价格为:%d\n",total);
return 0;
}

运行结果
程序中PRICE为符号常量,其值为20。当商品单价发生改变时,只要修改PRICE的值即可。
符号常量的使用,可以为编写程序提供很多好处:

  1. 增加程序的可读性:通过标识符就知道该常量的意思,即见名知义。
  2. 提高程序的可维护性:通过符号常量使得修改常量很方便,只需要在常量的定义处修改即可。
  3. 简化程序的代码:通过符号常量可以简化复杂表达式的重复输入。
  4. 方便数组的定义:可以将整型符号常量作为数组的长度。
  • 42
    点赞
  • 295
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇见C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值