我需要对减法的结果进行平方运算,而且速度要快.
我已经确定了一些可能的方法,但我想听听利弊.
unsigned int a = 5;
unsigned int b = 7;
/* Approach 1a */
unsigned int c = (a - b) * (a - b);
/* Approach 1b */
int d = (a - b);
unsigned int e = d * d;
/* Approach 2a */
unsigned int f = abs(a - b) * abs(a - b);
/* Approach 2b */
unsigned int g = abs((a - b) * (a - b));
/* Approach 2c */
unsigned int h = abs(a - b);
unsigned int i = h * h;
/* Approach 3a */
unsigned int j = (a > b) ? ((a - b) * (a - b)) : ((b - a) * (b - a))
我不确定如何确保随机负数不会被编译器优化,所以我只写了一般概念.我相信,仅仅通过观察就可以挑出一些(次)最优的解决方案.