unsigned vs. signed in C/C++

unsigned vs. signed in C/C++

    在使用C/C++編程時,無符號數據類型和有符號數據類型是肯定會混合使用的。
如DWORD和int數據類型。一般在使用for循環時,或者if判斷時,如果編程習慣不好
或者稍微馬虎時,就會出現問題。如下例:
    DWORD i = 0;
    int j = -1;
    if (j < i)
         printf("all right!/n");
    else
  printf("error!/n");
    結果是輸出"error!"。這是由於C/C++隱式數據轉化機制:向下轉化。會默認的
將有符號數據轉化無符號數據。因此,本來應該是-1的有符號數變成了2^31 - 1的
無符號數。所以結果就與預期輸出不符了。
    所以,以後再比較兩個數時,需要首先考慮這兩個數的數據類型是否相同。不同
時,需要人爲轉換。這樣纔不會出現上述錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章