用于检查两个int值是否在彼此的给定范围内的函数

时间:2015-05-05 20:58:27

标签: c

例如,选择int x = 30;int y = 27;。我的程序会将函数bool CheckWithinRange(int x, int y, int range);称为CheckWithinRange(x, y, 3)CheckWithinRange(y, x, 3),它将返回true。

编辑抱歉,我的不好,我的问题很简单:如何编写这样的函数?

2 个答案:

答案 0 :(得分:2)

在一般情况下,回答这个问题实际上有点棘手。如果xy可能非常大或距离很远,x-y可能会溢出。以下解决方案解决了intxy的所有range值的问题:

#include <limits.h>
#include <stdbool.h>

bool CheckWithinRange(int x, int y, int range) {
    if (range < 0)
        return false;
    if (x <= y)
        return x >= INT_MAX - range || x + range >= y;
    else
        return y >= INT_MAX - range || y + range >= x;
}

答案 1 :(得分:1)

#include <stdio.h>
#include <stdlib.h>

bool CheckWithinRange(int x, int y, int range)
{
    if (abs(x-y) <= range)
    {
        return true;
    }

    return false;
}

int main()
{
    int x = 30;
    int y = 27;
    int range = 5;

    if (CheckWithinRange(x,y,range))
    {
        printf("X and Y are within 5 digits");
    }
    else
    {
        printf("X and Y are not within 5 digits.");
    }

    return 0;
}

来自stdlib的{​​{3}}函数可用于查找C中2个数字之间的绝对差异。享受!

如果您担心算术溢出,那么@ chqrlie的答案就是您要找的。