疑惑
6. 如果有符号常量定义如下:a#define F(n) 2*n
那么请问代码中 F(3+2) 的值等于多少
答:F(3+2) == 2*3+2 == 8,注意,宏定义是在程序编译时先进行的预处理,做法是直接将标识符替换为常量,并不会进行相关运算。因此,直接将 F(3+2) 替换为 2*3+2。
这里为什么F(n)不为32呢?
这不是有答案吗 宏定义里存在运算符优先级问题,
传入3+2作*2操作时,乘以二的优先级高于加二,
所以优先3*2得6,最后加二得到8 这篇文章讲的挺细的,第五部分【注意事项】里有解释
https://blog.csdn.net/qq_41865229/article/details/86746707?biz_id=102&utm_term=%E5%AE%8F%E5%AE%9A%E4%B9%89c%E8%AF%AD%E8%A8%80&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-86746707&spm=1018.2118.3001.4187
页:
[1]