1.用宏f(x,y)实现x-y,正确的定义方式是哪个?解释下每个的含义和错的地方,哪个正确.A.#define f(x,y) x-yB.#define f(x,y) x-(y)C.#define f(x,y) (x)-(y)D.#define f(x,y) ((x)-(y))
2019-05-03
1.用宏f(x,y)实现x-y,正确的定义方式是哪个?解释下每个的含义和错的地方,哪个正确.
A.#define f(x,y) x-y
B.#define f(x,y) x-(y)
C.#define f(x,y) (x)-(y)
D.#define f(x,y) ((x)-(y))
优质解答
D最保险,在任何情况下都适用.
ABC在某些情况下会失效,举个例子:
A#define f(x,y) x-y
那么这样调用就有问题:5 * f(3,2)
一展开就变成了 5* 3 - 2 =13,而调用者原意是 5*1=5
B和C存在类似情况,只有D最好
D最保险,在任何情况下都适用.
ABC在某些情况下会失效,举个例子:
A#define f(x,y) x-y
那么这样调用就有问题:5 * f(3,2)
一展开就变成了 5* 3 - 2 =13,而调用者原意是 5*1=5
B和C存在类似情况,只有D最好