关于#define语句后面加括号与不加括号的区别
来源:互联网 发布:广东粤数大数据忽悠 编辑:程序博客网 时间:2024/05/22 00:25
关于#define语句后面加括号与不加括号的区别,如:
#define MAX_NUM x //x为参数
#define MAX_NUM ( x ) //宏的参数可以用圆括号括起来,此时带参数的宏外形与函数非常相似
当x是常数的时候,其实是没什么区别的。
不过当定义是“类函数宏”的时候大多是有区别的,那有什么区别呢?
例如:
#include <stdio.h>
#define A(x) x+x
#define B(x) (x+x)
int main()
{
int x=5;
printf("%d\n",A(x)*A(x) );
printf("%d\n",B(x)*B(x) );
return 0;
}
运行下你就明白了。
因为类函数宏只是简单的替代而不是函数:
A(x)*A(x)=x+x*x+x=35;
B(x)*B(x)=(x+x)*(x+x)=100;
SO,区别很显然。
实例运行情况如下:
0 0
- 关于#define语句后面加括号与不加括号的区别
- 关于#define语句后面加括号与不加括号的区别
- JavaScript函数加括号与不加括号的区别!
- 函数调用加括号与不加括号的区别
- if条件语句 加括号与不加 括号 的区别
- define定义常量加括号,不加括号区别
- JS中函数名后面的括号加与不加的区别和作用?
- JS中函数名后面的括号加与不加的区别和作用?
- JS中函数名后面的括号加与不加的区别
- new对象加括号与不加的区别
- 查询条件加括号与不加括号区别
- python: 函数加括号,不加括号的区别
- new 对象加括号和不加括号的区别
- new 对象加括号和不加括号的区别
- new 对象加括号和不加括号的区别
- new 对象加括号和不加括号的区别
- new 对象加括号和不加括号的区别
- QThread的currentThreadId()和currentThreadId一样吗--加括号与不加括号的区别
- Java设计模式之适配器模式
- 内存地址对齐与指针步长的考察
- docker的基础知识[1]
- 电路设计_电容寿命计算方法
- 算法[动态规划]-矩阵连乘问题
- 关于#define语句后面加括号与不加括号的区别
- 算法-0-1背包的动态规划,回溯,分支限界三种解法
- paxos分布式一致性算法
- sublime安装angularjs
- 电路设计_插座地线粗细要求
- Python基础-基本语法,内置容器
- Java多线程同步
- css3 很实用是特性
- [知识点滴]CSS伪类与伪元素的定义与区别