无符号类型赋值负数,以及求绝对值

#include <iostream>
#include <cmath>

int main()
{
    unsigned char i = 0 ;

    i = -1 ;
    std::cout<<"i="<<(int)i<<std::endl;

    i = -2 ;
    std::cout<<"i="<<(int)i<<std::endl;

    i = -3 ;
    std::cout<<"i="<<(int)i<<std::endl;

    i = 256 ;
    std::cout<<"i="<<(int)i<<std::endl;

    i = 257 ;
    std::cout<<"i="<<(int)i<<std::endl;

    i = 258 ;
    std::cout<<"i="<<(int)i<<std::endl;

    std::cout<<"---------------------------"<<std::endl;

    std::cout<<(int)std::abs(-100)<<std::endl;

    std::cout<<std::abs(-100.0)<<std::endl;

    std::cout<<std::abs(-100.0D)<<std::endl;

    return 0;
}

 具体原理涉及原码->反码->补码

 

求绝对值函数abs()有几个重载,传入int,返回值不是int,需要强制转换

 

posted @ 2016-11-26 00:42  郭志凯  阅读(1280)  评论(0编辑  收藏  举报