标题里这样定义求取n的平方,你们觉得对吗?有没有优化的地方呢?
其实第一眼看上去并没有什么不对,但是其实真的有很多优化的地方。
在程序里调用一下。
优化一:
假如这样调用呢?
SQUARE(3+2); //结果会是25嘛?
此时我们需要这样定义
#define SQUARE(n) (n)*(n)
优化二:
如果这样调用呢?
12/SQUARE(2) //结果会是3吗?
这时我们只需要再加一个括号就可以了。
#define SQUARE(n) ((n)*(n))
优化三
但是在不同环境下编译器的结果都是不同的。
可能是6*7 7*7 或者无法编译
所以需要避免x++,++x,这样的形参出现