手写C语言中强制类型转换算法

来源:互联网 发布:万网备案域名购买 编辑:程序博客网 时间:2024/05/17 04:52
具体了解C语言中强制类型转换是怎么实现的具体的算法或代码或者可以告知在哪个地方可以查看到相关的资料……现举个例子,好明晰我的问题。int i = (int)2.5;i的值是不是变为了2.比如说现在编写个函数int float_to_int(float a){........}函数体里面不用到强制类型转换,怎么实现浮点型数据到整型数据的转换。int float_to_int(float f){    int    flag;    int    sign;    int    shift;    int    number;    int    *value = (int *)&f;    //取得位模式的整数类型    sign = *value & 0x80000000;//取得符号值    shift = ((*value & 0x7f800000) >> 23) - 127;//取得偏移量        /*    **如果偏移量为负数,则原浮点数肯定为小数,直接返回0    */    if(shift < 0)        return 0;        number = (*value & 0x007fffff) | 0x00800000;//取得浮点数小数部分和省略的1    /*    **进行移位,取得整数值    */    flag = 23 - shift;    if(flag >=0)        number = number >> (23 - shift);    else        number = number << (shift - 23);    return sign?-number:number;//根据符号位判断返回是正数还是负数}以上是核心代码,已经调试运行过了,没有问题。但是,这个代码只能运行int型变量数据的限制范围,即-2^31到2^31-1。超过这个数据范围,结果接不太了解了。
0 0
原创粉丝点击