编译预处理(宏定义练兵场)
来源:互联网 发布:电脑开热点软件 编辑:程序博客网 时间:2024/05/21 01:55
上个月写了一篇有关编译预处理内容的博客,其中介绍到了宏定义,并且举了几个简单的例子说明了一下,宏定义是如何“忠实”展开的。最近碰到了一个问题,发现对宏定义“忠实”展开还是没有深刻了解,下面把这道题记录下来:
#include<stdio.h>#define MIN(x,y) (x)<(y)?(x):(y)int main(){ int i,j,k; i=10; j=15; k=10*MIN(i,j); printf("%d\n",k); return 0;}
上述代码输出结果为?
【典型错误】刚开始拿到这道题还是下意识的以函数的思维去理解了,把i,j两个变量传给MIN(x,y),然后做其后面的运算,并将结果返回到主函数中,最后得到k=10*10,输出结果是100。
【正确思路】一定牢记“忠实”展开,这个忠实的过程是指:k=10*(x)<(y)?(x):(y),即将MIN(i,j),直接替换为MIN(x,y)后面的字符,这里面的x对应于i,y对应于j。那么k=10*10<15?10:15
,即k=100<15?10:15所以最后输出的结果为15。
阅读全文
0 0
- 编译预处理(宏定义练兵场)
- 预处理(宏定义、文件包含、条件编译)
- C 预处理(宏定义,文件包含,条件编译)
- 预处理(宏定义、文件包含、条件编译)
- c语言预处理,包含(宏定义,包含,条件编译)
- C 预处理指令 宏定义 条件编译
- 预处理:头文件、宏定义、条件编译
- 【C语言】编译预处理及宏定义
- 练兵场
- 黑马程序员--IOS学习笔记总结 预处理指令(宏定义、条件编译、文件包含)
- 预处理 之 宏定义、文件包含、条件编译
- 15-预处理指令1-宏定义、条件编译、文件包含
- 预处理指令—宏定义,条件编译,文件包含
- Day12、预处理指令、宏定义、条件编译、多文件编程
- 12:预处理指令、宏定义、条件编译、多文件编程
- 预处理/宏定义/typedef定义
- 预处理-分节1(宏定义)
- 预处理宏定义
- hdu 4777 Rabbit Kingdom 树状数组
- BZOJ 1070 修车
- golang同步之sync包
- Redis使用get/set的误区
- MAVEN基础
- 编译预处理(宏定义练兵场)
- Mysql技术内幕InnoDB存储引擎--《九》性能调优
- aapt.exe错误
- JVM 类加载机制详解
- 常见的Android SO加壳(加密)思路
- 虚函数总结
- json问题积累(1)
- rabbitmq(三)
- the source attachment does not contain the source for the file xxx.class无法关联到某个类