首页 > 文章列表 > C语言中的绝对数

C语言中的绝对数

176 2024-09-06

C语言中的绝对数

数学中的绝对值定义为 x 的非负值,不考虑其符号。绝对值的表示法是变量 |x| 两侧的竖线。所以,从理论上来说|-16|将成为16.

现在,我怎样才能将它带入 C 编程语言

最简单的方法是使用stdlib 中的abs API。

#include 
#include 

整数
主要的()
{
    printf("%dn", 绝对值(-16));
    返回0;
}

但是,如果出现无法使用 stdlib 或任何库的情况怎么办

我以前也经历过这种事,很无奈。因此,我决定使用我的Google-fu来学习如何在没有任何库的情况下实现绝对值。

然后,我找到了简单易实现的解决方案。

#include 

int 绝对值(int x);

整数
主要的()
{
    printf("%dn", 绝对值(-20));
    返回0;
}

整数
绝对值(整数x)
{
    返回 x * ((x>0) - (x<0));
}

来源解释得更好并且很容易理解。但让我惊讶的是,它如何利用C语言的特点。也就是说,在 C 中我们没有布尔数据类型。

在C语言中,要确定真或假,它使用整数值。零代表假,一代表真。那么,让我们看看括号中的值结果将如何:

  • (x>0): 如果 x 大于 0,则为 True (1),否则为 False (0)。
  • (x<0): 如果 x 小于 0,则为 True (1),否则为 False (0)。

让我们分解一下当x是正数时。

x==10
结果 = x * ((x>0) - (x<0))
结果 = 10 * ( 1 - 0 )
结果 = 10 * 1
结果 = 10

让我们分解一下当x为负数时。

x==-16
结果 = x * ((x>0) - (x<0))
结果 = -16 * ( 0 - 1 )
结果 = -16 * -1
结果 = 16

最后,如果 x 为零。

x==0
结果 = x * ((x>0) - (x<0))
结果 = 0 * ( 0 - 0 )
结果 = 0 * 0
结果 = 0

当 x 为正数或零时,绝对方法永远不会改变 x。但是,当我们将 x 设置为负数时,我们通过乘以 -1 对其取负,从而从 x 中得到正数。

多么有趣的解决方案。

来源:https://dev.to/sukma_wardana/absolute-number-in-c-language-1aak

本类最新

查看更多