標籤:

C++如何判斷一個整數溢出?


加減法可以看標誌位,乘法的話只要除回來發現跟原來的數字不一樣就溢出了


加減法看標誌位

乘法的話,可以先用大一倍位長的臨時變數保存,然後再看看截斷後跟原值是不是一樣就行了,比如:

int64_t tmp = (int64_t)x * (int64_t)y;
if ((int64_t)((int32_t)tmp) != tmp) {
// overflow occurred
}


計算之後,無法判斷,除非有計算前的輸入信息


最笨的辦法就是使用long long,反正現在的計算機又不在乎這一點內存。

最笨的辦法就是最好的辦法!

這個辦法簡單易用易學。


推薦閱讀:

c語言中一個函數的聲明和定義有區別嗎?
C++中生成隨機數的問題?
*a.b()是什麼意思,運算符順序是怎麼看的?
CS、360、這些軟體的根目錄下有很多不同類型的文件。在沒有VS、JDK這些「程序設計語言」的「支持?
能不能用c#和c/c++以及其他語言寫一個完整的IDE(類似visual studio)?

TAG:C編程語言 | CC |