• 有符号和无符号整型数据溢出问题


    无符号数都有“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.

  • 相关阅读:
    TCP同步与异步
    C#委托与事件
    线程
    C# 多人聊天程序
    vs启动错误
    记住我的痛苦
    C#命名空间与类名的冲突
    C#调试类
    linux ifconfig命令参数及用法详解linux查看配置网卡命令
    B/S架构
  • 原文地址:https://www.cnblogs.com/Ph-one/p/8545323.html
Copyright © 2020-2023  润新知