检查两个整数是否具有相同符号的最简单方法是什么?这有什么简单的按位技巧吗?
在C/C++中是否有一种好的快速方法来测试多个变量是包含所有正值还是所有负值?
假设要测试5个变量:
变式1
int test(int a[5]) {
if (a[0] < 0 && a[1] < 0 && a[2] < 0 && a[3] < 0 && a[4] < 0) {
return -1;
} else if (a[0] > 0 && a[1] > 0 && a[2] > 0 && a[3] > 0 && a[4] > 0) {
return 1;
} else {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
变体2
int test(int a[5]) {
unsigned int mask = 0;
mask |= (a[0] >> numeric_limits<int>::digits) << …Run Code Online (Sandbox Code Playgroud)