無符號數都有“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.