我在考虑如何在不使用if
语句或abs()
的情况下获取整数的绝对值。起初,我使用左移位(<<
),试图使负号超出范围,然后将右移位回到原来的位置,但不幸的是,它对我不起作用。请让我知道为什么它不起作用以及其他替代方法。
最佳答案
int v; // we want to find the absolute value of v
unsigned int r; // the result goes here
int const mask = v >> sizeof(int) * CHAR_BIT - 1;
r = (v + mask) ^ mask;
关于c++ - 在不使用Abs函数或if语句的情况下获取绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40836924/