有符號和無符號整型數據溢出問題


無符號數都有“unsigned”標志,如果沒有“unsigned”標志,則程序默認該數為有符號數“signed”。
無符號數可正可負 ,有符號數一定為正。由於有符號與無符號數所占用的字節數相同,因此無符號數所允許的最大值比有符號數的大一倍。如 ,無符號短整型數的數值范圍是0到65535,而有符號短整型數的范圍是-32768到32767.

1.無符號整數溢出問題:

int main()  
{  
     unsigned short int b=0;  
     b=65535;  
     cout<<"b before is:"<<b<<endl;  
     cout<<"b after is:"<<++b<<endl;  
    return 0;  
}  

 

結果:

分析:b為最大值65535時,自增1后,滿足溢出條件 ,此時b值為0.

 

1.有符號整數溢出問題:

int main()  
{  
     short int a=0;  
         a=32767;  
     cout<<"a before is:"<<a<<endl;  
     cout<<"a after is:"<<++a<<endl;  
     cout<<"a after is:"<<++a<<endl;  
    return 0;  
}  

 

結果:

 

分析:a為最大值32767時,自增1后,滿足溢出條件 ,此時b值為-32768.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM