當某個運算符的運算對象類型不一致,且其中某一個運算對象是無符號類型時,這個需要進行相應地類型轉換,至於類型轉換的結果,則 依賴於機器中各個整數類型的相對大小 。
當某個運算符的運算對象類型不一致,且其中某一個運算對象是無符號類型時,分爲以下幾種情況:
當 無符號類型 的運算對象 大於 有符號類型 的運算對象時,則將 有符號類型轉換爲相應的無符號類型後再進行運算,轉換規則見我的博客 C++ 中有符號類型到無符號類型的轉換
當 有符號類型 的運算對象 大於 無符號類型 的運算對象時,情況將稍微複雜一些:
1、 如果機器中這個 無符號類型所能表示的數值範圍在這個有符號類型的數值範圍內 ,則將這個 無符號類型 的對象 轉換爲 有符號類型 後進行運算;
2、如果機器中這個 無符號類型所能表示的數值範圍超出了這個有符號類型的數值範圍 ,則要將 有符號類型 的對象 轉換爲 無符號類型 後進行運算。
還是那句話,切勿混合使用帶符號類型和無符號類型,因爲混合使用有符號類型和無符號類型常常導致與我們期望值大相徑庭的結果