有符號和無符號整型數據溢出問題
阿新 • • 發佈:2018-03-11
signed BE AI pos 技術分享 south 符號整型 有符號 mark
無符號數都有“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.
有符號和無符號整型數據溢出問題