这是C码吗:

/* LERP(a,b,c) = linear interpolation macro, is 'a' when c == 0.0 and 'b' when c == 1.0 */
#define LERP(a,b,c)     (((b) - (a)) * (c) + (a))

http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_T.html
等于这个C码?
private static double LERP(double a, double b, double c) { return (((b) - (a)) * (c) + (a)); }

是吗?

最佳答案

不。
请考虑以下几点:
LERP(x++,1,2);
c代码还可能有两次增加x的副作用(正如@phresnel所提到的,它是未定义的),而c代码是完全定义的,只会增加x一次。
结果也可能不同,因为第一个a和第二个(在宏中)可能有不同的值,因为它可能在第一个中增加。

09-08 00:32