在C语言中,# 指的是预处理指令。像#define就是在main函数之前预先进行定义。
define定义常量
这里定义了常量NUM,我们知道数组固定下标值必须是常量,这也进一步说明了这里define定义的是常量。
define定义宏
这里宏和函数有一些类似,我们来看下面的场景
对比一下函数和宏,是不是有种类似的感觉呢?
虽然相似,但他们其实本质上还是不一样的。
这里为什么要给x,y加()呢?我们可以看一下不加()的效果:
这是加不加()的两种情况,不加()直接就先执行乘法* 了,加了()就会先执行宏的加法,想必大家也明白了吧。
下面我们来看寄存器关键字register:
寄存器关键字register
首先来了解一下电脑用什么来存储东西
1.网盘
顾名思义,“网”,那么就与网络有关,它是利用网络,在其上存储东西,并且是免费的,而且空间很大,能有2TB之多,但是速度很慢。
2.硬盘
电脑上的硬盘,是硬件的一种,绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。大概长这么个样子
它的存储空间也很大,大概能有500G,但是速度也比较慢。
3.内存
这就不用多说了吧,大家都很熟悉了,内存也是计算机存储信息的主要场所,大概8~32G,速度比较快。
4.高速缓存
了解一下,在内存之上还有高速缓存这么个东西,速度更快,但是空间更小,只有几十MB。
5.寄存器
寄存器的信息都集成到CPU,速度非常之快,空间也非常小,通常储存频繁大量使用的数据。
早期CPU都是到内存中读取数据然后进行处理的,但是随着技术发展,CPU运行速度越来越快,内存却没有太大的突破,因此,CPU总是闲置。就像盖房子一样,搬砖的完全跟不上砖瓦工盖房子的速度,这样肯定不行,于是就有了高速缓存和寄存器,内存里的数据先放到高速缓存,高速缓存的数据再放到寄存器,CPU直接读取寄存器里的数据,这样配合就快的多了。
寄存器关键字register只能向编译器建议将什么数据存放到寄存器,具体还得看编译器自己的决定,现在的编译器已经很聪明了,自己也会把重要的数据放入寄存器。