菜鸟日志:有符号和无符号的比较

        说起来很惭愧,以前我在写代码的时候基本没注意有符号和没符号这种说法,基本就是拿过来就是撸,虽然有听过这个无符号和有符号是什么东东。。但是基本不用-_-||。

        今天在学习的时候看到了相关的知识点记录一下。       

        有符号和无符号不能进行比较,加减乘除,如果进行这些操作,那么操作系统会先把有符号转成无符号,一个有符号的正数可能对程序结果没影响。负数的话,大家都知道在内存中是以补码的方式存储的,这个时候操作系统把负数转成无符号数据的话,那是相当大的。例子:

        unsigned int a=20;signed int b=-100; a和b进行比较,我想我们想要的结果肯定是a大于b,但是输出的结果却是b大于a,因为b转成无符号数是相当大的。

        下面输出点代码作为验证结果:

    unsigned int a = 20;

    signed int b = -100;

    unsigned int c = b;

    cout<<"a:"<<a<<std::endl;

    cout<<"b:"<<b<<std::endl;

    cout<<"c:"<<c<<std::endl;

    cout<<a+b<<std::endl;

输出结果:

a:20
b:-100
c:4294967196
4294967216

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值