1.宏定义 #define的使用
1.1.宏定义的概念
宏定义就是用一个标识符来表示一个字符串,如果后面代码出现了该标识符,那么就全部替换成指定的字符串
1.2.宏定义实现案例
#include <stdio.h>
#define N 123
int main()
{
printf("N = %d\n",N);
printf("N + N = %d\n",N+N);
return 0;
}
注意
这里 N 不是变量,N是一个常量不可被修改
1.3.使用宏定义常见的错误
我们这里写了一个宏定义,求两个数的乘积
#include <stdio.h>
#define mul(a,b) a * b
int main()
{
printf("A = %d\n",mul(3 + 2, 3 - 2));
printf("B = %d\n",mul(5, 1));
return 0;
}
很多小伙伴在写程序或者考试中,在这里栽跟头难以察觉,以为自己算数算错了
但我们把程序展开来看就一目了然
mul(3 + 2, 3 - 2) = 3 + 2 * 3 - 2
改正程序,分别给a b加上括号就可以了
#define mul(a,b) (a) * (b)
2.const关键字
const的作用
关键字const用来定义常量,如果被const修饰,那么该标识符为一个常量,它的值就不能再被改变
例:
这段程序中,n被const修饰后,我们想重新赋值,就发生了报错
const的不安全性
和宏定义#define的区别是,const类型并非绝对无法修改,当我们使用指针指向const修饰的变量,仍然可以重新赋值
例:
int main()
{
const int n = 10;
int * p = &n;
*p = 666;
printf("n = %d",n);
return 0;
}
3.enum 枚举常量
enum 标识符{常量}
enum order{
A,B,C = 66,D,E,F
};
枚举类型,默认第1个值从0开始,后面逐次增加如果中间有赋值操作,那么从赋值位置开始,后面依然逐次增加,D的值是67,E的值是68...
注意:
枚举类型不可以直接赋值
例:enum order{A = 'a'}; 这个相当于新建了一个枚举类型,与原本的无关
枚举类型支持
只能使用int类型,多数编译器默认enum型长度等于int型,这里小编测试的长度是4个字节