本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1.常量
常量是指在程序运行期间其数值不发生变化的数据 常量一般在代码中直接出现,用于给变量进行赋值,常量不允许进行修改
常量:整型常量、浮点型常量、字符串常量、字符常量、标识符常量(宏)
10 1 1.23 ‘a' "hello world"
1.1 整型常量
整型常量通常简称为整数。
整数可以是十进制数、八进制数和十六进制数。例如,十进制的数值3356可以有下列二种不同的表示形式:
八进制数 06434
十六进制数 0xd1c
1.2 浮点常量
浮点常量又称为实数,一般含有小数部分。
在C语言中,实数只有十进制的实数,分为单精度和双精度。实数有两种表示方法, 即一般形式和指数形式。
一般形式的实数基本形式如下: 例如, 3.5 , -12.5, 3.1415926
1.3 指数常量
指数形式的实数一般是由尾数部分、字母e或E和指数部分组成。 当一个实数的符号为正号时,可以省略不写,其表示的一般形式如下:
1.176e+10 表示 1.176×1010
-3.5789e-8 表示 -3.5789×10-8
通常表示特别大或特别小的数
1.4 字符常量
字符常量是指一个单一字符, 其表示形式是由两个单引号包括的一个字符。
A’, ‘a’, ‘Q’, ‘0’, ‘9’, ‘+’, ‘:’, ‘?’, ‘$’ 都是字符常量。
在C语言中, 字符常量具有数值。字符常量的值就是该字符的ASCII码值。
可以把字符常量看做一个字节的正整数。
例如,char a, b, u, v
a = 'F' ; // 将70送给a
b = 'A'+2; // b存放的是 'C' 字符
u = ' ' + 'B'; // u存放的是 'b' 字符
v= 'b' - 32; // v存放的是 'B' 字符
它们分别相当于下列运算;
a= 70;
b= 65+2;
u= 32+66 ;
v= 97-32;
常见的ASCII码: '\0'—>0 0—>48 '\n'—>10 '\r'—>13 SPACE —>32 'A'—>65 'a'—>97 127之后就是乱码了
1.5 字符串常量
所谓字符串常量是指用双引号括起来的一串字符来表示的数据。(字符串以\0结尾) “9”—‘9’,’\0’
下面给出几个字符串常量的例子:
"Hello!", "StudentS", "9", “LINUX", "李四" “北京海淀成府路***号", "姓名:", “****@163.com", ""
1.6 标识符常量
所谓标识常量是指用标识符代替常量使用的一种常量, 其名称通常是一个标识符。
标识常量也叫符号常量,一般用大写英文字母的标识符。
在使用之前必须预先定义。
定义格式: #define 宏名 值
1、宏定义的位置:头文件下方,主函数上方
2、宏名:一般要求大写,由字母数字下划线组成,数字不能作为开头
3、宏名、值用空格分隔
4、如果宏中涉及了参数,在宏后的定义需要对每个参数使用小括号明确优先级
例如
#define MAX 50
#define PI 3.1415926
#define NULL 0
#define EOF -1
#define ERROR -1
其中,MAX、PI、NULL、 EOF和ERROR都是标识常量, 它们代替的常量分别是50、3.1415926、0 、-1和-1 。
一般情况,每个标识常量说明式子只能给出一个标识常量,并且占据一个书写行。
定义一个宏名字之后,可以在其他宏定义中使用,例如:
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
如果一个串长于一行,可在行尾用反斜线”\”续行
#define LONG_STRING “This is a very very long \
String that is used as an example”
宏的作用方式:
宏名进行宏的使用,代码中出现宏名的地方使用宏的值进行替换
带参宏: #define 宏名(参数) 值/表达式
#define ADD(x,y) x+y
宏的字符串化:#
字符串拼接:## 拼接的时候如果符号前有空格会进行强连接,忽略无效字符
如果宏的值部分不是一个正常的数值或表达式,则会当作宏名处理,此时需要在字符串的左右两边加上双引号
eg:
#define STR hello 此时将hello当作一个宏名处理,如果文件中没有该宏报未定义的错误
#define STR "hello" 编译通过,将hello当字符串处理
#define A(name,type) type name_##type##_type
#define B(name,type) type name##_##type##_type
A(abc,int);
int name_int_type
B(hello,char);
char hello_char_type