在程序开发过程中宏定义的使用方便了很多计算
例如:#define fun(a) (a > 0) ? a : -a
但是这个宏定义的使用对于初学者会遇到不知所措的问题。如下的方式调用就会有问题,得不到调用者想要的结果。
fun(10 - 12) = ?
对于这种计算我们就原封不动的把表达式带入到宏定义中,10 - 12 > 0 ? 10 - 12 : -10 - 12 结果是:-22
根据优先级的关系这样就能够很好的得出结果了。
所以在使用宏定义的时候为了防治奇异,最好这样定义:#define fun(a) ((a) > 0) ? (a) : -(a)