一、前言
本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。并且作者在此承诺,这个系列全部文章均免费且开源,主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
今天要讲的内容是常量,和变量相对,常量就是不变的量。
二、人物简介
- 第一位登场的就是今后会一直教我们C语言的老师 —— 光天。
- 第二位登场的则是今后会和大家一起学习C语言的没什么资质的小白程序猿 —— 化日。
三、常量简介
- C语言中的常量,主要分为以下几种类型:
四、数值常量
- 数值常量分为整数和浮点数,整数一般称为整型常量,浮点数则称为实型常量。
1、整型常量
- 整型常量分为二进制、八进制、十进制 和 十六进制。
- 每个整型常量分为三部分:前缀部分、数字部分、后缀部分。
- 如下表所示:
- 关于前缀这部分,在 光天化日学C语言(06)- 进制转换入门 已经讲到过,就不再累述了。
- 这里着重提一下后缀,
u
(unsigned
)代表无符号整数,l
(long
)代表长整型,ll
代表long long
。
- 换言之,无符号整型就是非负整数。
- 待时机成熟,我会对整数的存储结构进行一个非常详细的介绍。
【例题1】说出以下整型常量中,哪些是非法的,为什么非法。
1314
520u
0xFoooooL
0XFeeeul
018888
0987UU
0520
0x4b
1024llul
30ll
030ul
2、实型常量
- 实型常量又分为 小数形式 和 指数形式。
1)小数形式
- 小数形式由三部分组成:整数部分、小数点、小数部分。例如:
3.1415927
4.5f
.1314
- 其中
f
后缀代表float
,用于区分double
。 .1314
等价于0.1314
。
2)指数形式
- 指数形式的典型格式为
xey
,如下:
1e9
5.2e000000
5.2e-1
1.1e2
- 它表示的数值是:
-
- 其中
代表的是数字
10
的指数部分,所以是支持负数的。
五、字符常量
- 字符常量可以是一个普通的字符、一个转义序列,或一个通用的字符。
- 每个字符都对应一个 ASCII 码值。
1)普通字符
- 普通字符就是用单引号括引起来的单个字符,如下:
'a'
'Q'
'8'
'?'
'+'
' '
- 包含 26 个小写字母,26 个大写字母,10 个数字,几个标点符号,运算符等等。
- 具体参见:光天化日学C语言(07)- ASCII码。
2)转义字符
- 转义字符是用引号引起来,并且内容为 斜杠 + 字符,例如我们之前遇到的用
'\n'
代表换行,\t
代表水平制表符(可理解为键盘上的 tab 键),'\\'
代表一个反斜杠,等等; - 当然还可以用
'\ooo'
来代替一个字符,其中一个数字o
代表一个八进制数;也可以用'\xhh'
来代表一个字符,具体见如下代码:
#include <stdio.h>
int main() {
char a = 65;
char b = '\101';
char c = '\x41';
printf("%c %c %c\n", a, b, c);
return 0;
}
- 以上的代码输出结果为:
A A A
- 这是因为八进制下的
101
和十六进制的41
在十进制下都是65
,代表的是大写字母'A'
的ASCII 码值。
【例题1】请问如何输出一个单引号?
六、字符串常量
- 字符串常量,又称为字符串字面值,是括在双引号
""
中的。一个字符串包含类似于字符常量的字符:普通字符、转义序列。
1、单个字符串常量
#include <stdio.h>
int main() {
printf( "光天化日学\x43语言!\n" );
return 0;
}
- 我们可以用转义的
'\x43'
代表'C'
和其它字符组合,变成一个字符串常量。以上代码输出为:
光天化日学C语言!
【例题2】如果我想要如下输出结果,请问,代码要怎么写?
"光天化日学C语言!"
2、字符串常量分行
- 两个用
""
引起来的字符串,是可以无缝连接的,如下代码:
#include <stdio.h>
int main() {
printf(
"光天化日学"
"C语言!\n"
);
return 0;
}
- 这段代码的结果也是:
光天化日学C语言!
七、符号常量
1、#define
- 利用
#define
预处理器可以定义一个常量如下:
#include <stdio.h>
#define TIPS "光天化日学\x43语言!\n"
#define love 1314
int main() {
printf( TIPS );
printf("%d\n", love);
return 0;
}
- 以上这段代码,会将所有
TIPS
都原文替换为"光天化日学\x43语言!\n"
;将所有love
替换为1314
。
2、const
const
的用法也非常广泛,而且涉及到很多概念,这里只介绍最简单的用法,后面会开辟一个新的章节专门来讲它的用法。
#include <stdio.h>
const int love = 1314;
int main() {
printf( "%d\n", love );
return 0;
}
- 我们可以在普通变量定义前加上
const
,这样就代表它是个常量了,在整个运行过程中都不能被修改。
【例题3】下面这段代码会发生什么情况,自己编程试一下吧。
#include <stdio.h>
const int love = 1314;
int main() {
love = 520;
printf( "%d\n", love );
return 0;
}
- 通过这一章,我们学会了 各种类型 的常量,希望对你有帮助哦 ~ 祝大家早日成为 C 语言大神!
(https://blog.csdn.net/whereisherofrom/category_11115622.html)