C语言基础四_预处理和变量类型

预处理指令:以#号开头,可以写在任何位置,在编译之前执行

宏定义文件包含    条件编译

一:宏定义:无参数/有参数

NUM叫做宏名,6是用来替换宏名的字符串

#define NUM 6

#define sum(a,b) ((a)*(b))//这里需要括号括起来,防止复杂运算出错

@宏定义和函数虽然相似,但宏定义在编译之前作好计算,函数是在程序运行时调用,所以宏定义效率更高。

@宏定义不检测类型。但是替换之后,编译器会检查

@宏定义不涉及类型判断

二:条件编译:程序中需要哪段代码编译哪段

#define NUM 10//条件一般需要用到宏定义
#if 条件1//不可以放变量
。。。code1。。。    //如果条件1成立,则把code1编译进程序
#elif 条件2
。。。code2。。。
#else
。。。code3。。。
#endif
其他用法:
#if defined(MAX)//#if !defined(MAX)
。。。code。。。
#endif
#ifdef MAX//#ifndef MAX


三:文件包含:include

#include <文件名> :直接到C语言库函数头文件所在的目录中寻找文件

#include "文件名" :在原程序当前目录中寻找,若找不到,则在系统path中找,最后才在C语言库中找。

@允许嵌套包含,不允许递归包含(相互包含)

@防止头文件里面的内容重复包含:每一个头文件中都使用条件编译


变量类型:

C语言根据存储类型的不同,可以把变量分为:自动变量,静态变量寄存器变量

对应于存储的地方有3种:运行时堆栈,普通内存硬件寄存器

@自动变量:被auto修饰的局部变量都是自动变量,默认情况下局部变量都是自动变量,auto可以省略;

全局变量不可能是自动变量:生命周期长 ,很多地方都有。

@静态变量:

1.包括所有全局变量。

2.static修饰的局部变量(即改变生命周期,但没有改变作用域

@寄存器变量:存储在硬件寄存器中的变量

int main(){
register int a;   //若寄存器不够用,则程序自动将寄存器变量转换为局部变量处理
return 0;    
}


register修饰的自动变量都是寄存器变量

只限于int , char 和指针类型的变量使用

一般将一些使用频繁的自动变量定义为寄存器变量,其他用内存。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值