不帶正負號轉換為帶正負號
不帶正負號整數類資料類型的物件可以轉換成對應的帶正負號資料類型。 不過,如果不帶正負號的物件的值超出可由帶正負號類型表示的範圍,這種轉換可能會造成資料的錯譯,如下列範例所示:
範例
// conve__pluslang_Converting_Unsigned_to_Signed.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
short i;
unsigned short u = 65533;
cout << (i = u) << "\n";
}
輸出
-3
在前述範例中,u 是一個 unsigned short 整數類物件,必須轉換成帶正負號的數量,以評估 (i = u) 運算式。 因為其值無法以 signed short 適當地表示,因此會造成資料錯譯,如下所示。