两个无符号整数相减并得到结果的绝对值

Ge0*_*ges 6 c

我有两个无符号整数,a 和 b。现在我的目标是获得两者之间差异的绝对值。

目前我正在做的是:

uint64_t a, b;
llabs((int64_t)(a - b))
Run Code Online (Sandbox Code Playgroud)

似乎有效,但我不确定是否有效。有人能证实吗?

Ami*_*wad 8

好吧,对于某些值来说存在一个问题:即 对于a=0并且b大于你的最大值int64_t+1将会发生溢出。我不知道,你现实世界的价值观是否也是这样。

然而,你可以更容易地做到这一点:

a>b?a-b:b-a
Run Code Online (Sandbox Code Playgroud)