如果閱讀了上一篇:
C 語言, 什麼 char c = 0xFFFF 返回 -1? 那麼這個題目就非常好理解了!
(因為C語言裡面數據類型表示的數據是有範圍限制的)
舉一個簡單的例子:
int c = INT_MAX;
int b = -1;
那麼有 c > b 是成立的!
但是當
c - b > 0 的時候 是不成立的,因為 c-b 變成了一個負數了!
int main(){ int c = INT_MAX; int b = -1; if (c > b) { printf("%d > %d\n", c, b); } else { printf("%d < %d\n", c, b); }
if (c-b > 0) { printf("%d - %d > 0\n", c, b); } else { printf("%d - %d < 0 \n", c, b); } printf("%d - %d = %d\n", c, b, c-b); getchar(); return 0;}編譯運行如下:
這個問題,常見於二分查找的時候的運用! 計算 mid 的時候容易錯誤的使用加法導致溢出