1. 程式人生 > >給unsigned int 型賦予一個負數之後...

給unsigned int 型賦予一個負數之後...

#include<iostream>
using namespace std;

int main()
{
    unsigned int a=-1;
    cout<<a<<endl;
    return 0;    

(1)a=-1,輸出為:4294967295。

(2)a=-2,輸出為:4294967294。

(3)a=-3,輸出為:4294967293。

原因:在c++中,如果賦值給無符號型別一個超過它表示範圍的值(如負數),結果是初始值對無符號型別表示數值最大值取模後的餘數,而unsigned int在大部分編譯器中該型別佔4個位元組,則最大值是2的32次方,為4294967296。所以會出現這樣的輸出。