认识常量
常量就是固定的值,也称字面量,在执行程序时常量不会被改变,常量可以是任何一个数据类型,如常见的:整数常量、浮点常量、字符常量、字符串常量等等。需要注意的是,退出情况下,常量被定义后是不可以改变的。
整形常量
常见的整形常量有八进制的、十进制的、十六进制的。
0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。 整数常量还可以带一个后缀,这个后缀分别是 u 和 l,其中的 u 是 unsigned ,表示的是无符号整数,而 l 是 long ,表示的是长整形。
下面给大家举一些整形常量的例子:
22 /* 合法的 */
21u /* 合法的 */
0x5BL /* 合法的 */
075 /* 非法的:8 不是八进制的数字 */
033UU /* 非法的:不能重复后缀 */
下面是各种类型整数常量的例子:
22 /* 十进制 */
0212 /* 八进制 */
0x4c /* 十六进制 */
20 /* 整数 */
20u /* 无符号整数 */
20l /* 长整数 */
20ul /* 无符号长整数 */
浮点常量
浮点常量是由整数部分、小数点、小数部分和指数部分组成的。我们可以使用小数形式或者指数形式来表示浮点常量。
当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。
当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。
带符号的指数是用 e 或 E 引入的。
下面举几个浮点常量的例子:
3.14159 /* 合法的 */
314159E-4L /* 合法的 */
314E /* 非法的:不完整的指数 */
220f /* 非法的:没有小数或指数 */
.e22 /* 非法的:缺少整数或分数 */
字符常量
字符常量括在英文的单引号中,如'a'可以存储在 char 类型的简单变量中。字符常量可以是一个普通的字符,如'a'、一个转义序列,如'\n'。还可以是一个通用的字符,如 '\u2C'。在 C 语言中,还有一些特定的字符,当它们前面有"\"时,它们就具有特殊的含义,被用来表示如换行符'\n'或制表符'\t'等。下面我列出了一些这样的转义序列码:
转义序列码 解释说明
\\ \字符
\' '字符
\" "字符
\? ?字符
\a 警报铃声
\b 退格键
\f 换页符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ooo 一到三位八进制数
\xhh... 一个或多个十六进制数
下面来举一个转义序列字符的小例子,源代码如下:
#include <stdio.h>
int main()
{
printf("Hello\tWorld\n\n");
return 0;
}
运行编译上面的代码,输出结果如下:
Hello World
字符串常量
字符串字面值或字符串常量括在英文双引号中。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。使用空格作分隔符,把一个很长的字符串常量进行分行。
下面来举个例子显示一些字符串常量。下面这三种形式所显示的字符串是相同的。
hello,word
hello,\word
"hello" "word"
如何定义常量
方式一:#define 预处理器
下面是使用 #define 定义常量的例子:
#include <stdio.h>
#define PRICE 100;
int main()
{
int n = 100,total;
scanf("%d",&n);
total = n * PRICE;
printf("总计%d元",total);
return 0;
}
运行编译上面的代码,输出以下结果:
总计1000元
方式二:const 关键字
下面是使用 const 定义常量的例子:
#include <stdio.h>
int main()
{
const int PRICE = 100;
int n = 10,total;
total = n * PRICE;
printf("总计%d元",total);
return 0;
}
运行编译上面的代码,输出以下结果:
总计1000元