例如,选择int x = 30;
和int y = 27;
。我的程序会将函数bool CheckWithinRange(int x, int y, int range);
称为CheckWithinRange(x, y, 3)
或CheckWithinRange(y, x, 3)
,它将返回true。
编辑抱歉,我的不好,我的问题很简单:如何编写这样的函数?
答案 0 :(得分:2)
在一般情况下,回答这个问题实际上有点棘手。如果x
或y
可能非常大或距离很远,x-y
可能会溢出。以下解决方案解决了int
,x
和y
的所有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的答案就是您要找的。 p>