#define声明时需要注意的事情
2017-09-04 08:11
387 查看
1.需要注意的事情
如何使用define声明一个常数,用以表明1年中有多少秒(忽略闰年)define SECOND_PER_YEAR (60*60*24*365)UL
在以上定义中需要注意三个地方:(1) 由于宏定义是预处理指令,而非语句,所以在进行宏定义的时候不能以分号结束;
(2)预处理只会执行简单的替换,不会计算表达式的值,所以需要注意括号的使用,直接写出是如何计算出一年有多少秒,而不是计算出实际的值;
比如:
define N 3+2
cout<<4*N宏定义之后N直接由字符串3+2替换,所以计算的时候是4*3+2=14,而不是我们想要的4*(3+2)=20,如果想要达到后一种结果,那么在定义的时候应该定义成#define N (3+2)
(3) 考虑到可能存在数据溢出问题,更加规范化的写法是使用长整型类型,即UL告诉编译器这个常数是长整型数。
注意,一定要清楚的是预处理在编译之前仅仅是做文本的替换工作!如果想要确保在执行的时候要按照预想的操作去执行,那么就一定要注意要加上括号,比如定义#define MUL(A,B) A*B,当计算MUL(1+2,3+4)的时候计算结果是1+2*3+4=11,而不是我们预期的(1+2)(3+4)=21,如果想要得到这种结果一定要加上括号#define MUL(A,B) ((A)(B))!
相关文章推荐
- 网站搬迁需要注意的事情
- 爬取微信文章的小代码写入一个本地网页时需要注意声明html文档编码
- 个人兴建网站有哪些事情需要特别注意?怎样才能不被k站?
- C++学习总结_成员函数的声明和实现需要注意问题
- 大数据系统-在硬盘上需要注意的事情
- 声明指针需要注意的一些东西
- 删除控件 需要注意的事情
- 声明引用的时候需要注意的几个问题
- Java Arrays类进行数组排序需要注意的事情
- 大数据系统-在硬盘上需要注意的事情
- javascript开发过程中需要注意的事情。
- 应用发布前,需要注意事情
- 高并发下需要注意的事情1
- IE11 下ajax需要注意事情
- 大数据系统-在硬盘上需要注意的事情
- js之语句的一些需要注意的事情
- 移动端开发需要注意的一些事情
- Exchange 2007 安装完后需要注意的几件事情
- iOS中需要注意的事情
- IOS开发需要注意的property变量声明