從數學意義上,這是對的。但是,就怕但是。
#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等編程技術的技巧經驗分享),若作品對您有幫助,請關注、分享、點贊、收藏、在看、喜歡,您的支持是我們為您提供幫助的最大動力。
歡迎關注。助您在編程路上越走越好!