从数学意义上,这是对的。但是,就怕但是。
#include
int main()
{
long long v;
v = abs(-2147483648);
printf("%lld\n", v);
return 0;
}
输出:
-2147483648
我们从source code中一一解开.
/* Return the absolute value of I. */
int
abs (int i)
{
return i < 0 ? -i : i;
}
汇编如下:
negl是求补指令,用零减去操作数,然后结果返回操作数。也可以表达成:将操作数按位取反后加1.
所以,-2147483647 == 0x80000000 ----> 求补得到0x80000000.
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!