unsigned 型別減法注意點

2021-06-28 19:45:43 字數 362 閱讀 8021

新年第一天,執行新年計畫,每日一記,大小皆宜。

今天碰到乙個小問題,不引人注目,卻也會是個大坑,留下警示自己吧。

**中有兩個unsigned int相減的公式:

unsigned int a = 1;

unsigned int b = 2;

那麼 int c = a - b;等於多少呢?

乙個小細節,都以為是-1,沒問題!!!!

可是gdb裡面走一下怎麼就是不對,乙個很大的數字,為什麼呢?奇怪!!!!

仔細想想,原理自明!!!

a, b 都是unsigned int型別,做減法的時候不需型別轉換,但是當值小於0的時候就溢位了,成了乙個無效的數字。

以後注意!!!

MySQL資料型別 UNSIGNED注意事項

1.unsigned unsigned屬性就是將數字型別無符號化,與c c 這些程式語言中的unsigned含義相同。例如,int的型別範圍是 2 147 483 648 2 147 483 647,int unsigned的範圍型別就是0 4 294 967 295。在mysql中整型範圍 型別 ...

型別轉換注意點

低 高 byte,short,char int long float doubleint i 128 byte j byte i int k 10 int l 20 system.out.println i 128 system.out.println j 128 記憶體溢位 精度丟失問題 syst...

C語言 unsigned型別的用法!

筆者今天在刷題時,有乙個測試點老是通不過,經過多次檢查 和檢視大佬題解之後,發現是乙個小細節出了問題。測試點的正確輸出是乙個大正數,筆者的測試輸出是乙個負數,差的離譜。我一開始用的是int型的變數進行累加,因為測試點的數值太大了,導致該變數不斷增大超出了可表示的正數範圍,最後int型變數的最高一位變...