两个整数的相同符号

时间:2018-05-13 06:42:40

标签: c bit-manipulation

请查看我的代码:

#include <stdio.h>
#include <stdbool.h>

void checksign(int, int);
bool samesign(int, int);

int main() {
    printf("Check same sign\n\n");

    int a = 27952, b = -68643, c = 0;

    checksign(a, a);
    checksign(a, b);
    checksign(a, c);
    checksign(b, b);
    checksign(b, c);
    checksign(c, c);

    return 0;
}

void checksign(int a, int b) {
    printf("%d and %d have ", a, b);
    if (!samesign(a, b)) {
        printf("not ");
    }
    printf("the same sign.\n");
}

bool samesign(int a, int b) {
    return (a | 0) == (b | 0);
}

我在这里阅读了相关主题,这些主题都显示出合理的解决方案。 我真的无法理解为什么/如何使用同一个函数(至少在我的64位Linux上,使用GCC 7.3.0编译)。 任何帮助或见解都表示赞赏。

0 个答案:

没有答案