在《The C Programming Language》中对#define 的讲解有这样一段描述的话:
“
#define MAX(A,B) (((A)>(B))?(A):(B))
仔细考虑一下max的展开式,就会发现它存在一些缺陷。其中,作为参数的表达式要重复计算两次,如果表达式存在副作用(比如好友自增运算符或输入/输出),则会出现不正确的情况。例如:
max(i++,j++) /*wrong*/
它将对每个参数执行两次自增操作。
”
但我进行了一下测试,发现和上面描述的结果不一致,现在问题来了,到底是我理解错了,还是上面这段话有问题,希望有兴趣的童孩能指导指导。
