常量的概念
-
常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
-
常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
-
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
-
整数常量
-
整数常量的值可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
-
整数常量的值也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
212 /* 合法的 */
215u /* 合法的 */
0xFeeL /* 合法的 */
078 /* 非法的:8 不是八进制的数字 */
032UU /* 非法的:不能重复后缀 */
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
30 /* 整数 */
30u /* 无符号整数 */
30l /* 长整数 */
30ul /* 无符号长整数 */
浮点常量
-
浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
-
当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。
3.14159 /* 合法的 */
314159E-5L /* 合法的 */
510E /* 非法的:不完整的指数 */
210f /* 非法的:没有小数或指数 */
.e55 /* 非法的:缺少整数或分数 */
字符常量
-
字符常量是括在单引号中
-
字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)。
转义字符
参考而已
转义序列 | 含义 |
---|---|
\ | \ 字符 |
‘ | ‘ 字符 |
“ | ” 字符 |
\? | ? 字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
#include <stdio.h>
int main()
{
printf("Hello\tWorld\n\n");
return 0;
}
字符串常量
-
字符串字面值或常量是括在双引号 “” 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。
-
空格占一个字符长度空间
"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
定义常量
-
使用 #define 预处理器。
-
使用 const 关键字。
方式1——#define 预处理器
#define 常量名称 常量值
相关实例:
#include <stdio.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main()
{
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
方式2——const关键字
const 数据类型 量名称 = 常量值
const 声明定义常量要在一个语句内完成,必须一次性写完
#include <stdio.h>
int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
define和const的区别
-
define是宏定义,它不能定义常量,但宏定义可以实现在字面意义上和其它定义常量相同的功能,不为宏名分配内存,也就是说,没有给变量名分的哦
-
define 实现常量,没有赋值符号,没有数据类型
-
宏是在预处理阶段展开,不做任何类型检查
-
宏定义,不占用内存
-
const实际上是改变一个变量的存储类,把该变量所占的内存变为只读。所以和定义变量的方式一样。
-
const 常量是编译运行阶段使用。有具体的类型,在编译阶段会执行类型检查
-
const占用内存空间(可以是堆中也可以是栈中)
常量的注意
-
字符常量有且仅有一个字符,用单引号表示
-
字符串常量可以包括全部的字符,用双引号表示
-
暂无评论内容