在C ++中计算long long int类型整数绝对值的最快方法是什么?没有if()
声明可以吗?我正在尝试转换为无符号,然后再次签名,但它不起作用。
答案 0 :(得分:5)
针对三元运算符,个人资料尝试std::abs
,并亲眼看看。
答案 1 :(得分:2)
改编自Bit Twiddling Hacks, Compute the integer absolute value (abs) without branching:
long long v; // value to abs()
long long const mask = v >> sizeof(long long) * CHAR_BIT - 1;
unsigned long long result = (v + mask) ^ mask;
答案 2 :(得分:0)
您应该使用llabs
。请参阅reference about abs
functions on cplusplus.com