前言
面试题大全中提到了好多关于define的面试题,正好找到一篇介绍define很好的奥,还活着哦写的博客,整理总结
1、一年有多少秒
#define SECONDS_PER_YEAR (60*60*24*365)UL
为什么加ul 一开始我也不知道 ,l代表long,如果在16位的系统上(ios有16位的么)606024*365会超过15位的溢出了,所以给一个long类型,u代表的是无符号数,毕竟这个时间不可能是负数,恩是这样的
2、x平方函数
#define SQR(x) ((x)*(x))
这里可以看到有很多的括号,为何呢。写成SQR(x) xx行不行,当然一般情况下是可以的,如果x=10+1,这个表达式就编程10+110+1,代码验证过了。恩所以还是多写括号吧。
3、取消宏定义undef
#define SQR(x) ((x)*(x))
#undef SQR
以上操作可以取消SQR的宏定义,简单粗暴
4、求最大值
#define MAX(x, y) ((x)>(y) ? (x) : (y))
最小值同理,其实我目前接触到的oc这边用到的宏定义比较简单,原博文介绍c语言中的用法比较多。
原作者说了一句话非常厉害
define 是个演技高超的替身演员,但也经常耍大牌
网友评论