前言
紀錄一下判斷整數是否 overflow 的基本概念,以 C 語言為例
概念
Overflow 是指做運算的時候數值超過資料允許的範圍
以 Integer 來說是 4bytes,也就是 32bit
有號數 Integer 的範圍是 ˋ–2,147,483,648 ~ 2,147,483,647ˋ
判斷有號數的 overflow,一種直覺的方式是,當兩個都是正數或是負數的有號數相加後,結果變號,代表 overflow 發生
1 | bool IntOverflow(int a, int b) { |
還有另一種做法使判斷更簡潔,直接利用 standard library <limits.h>
中的 INT_MAX
及 INT_MIN
來判斷
1 | bool IntOverflow(int a, int b) { |