具体了解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。超过这个数据范围,结果接不太了解了。
手写C语言中强制类型转换算法
最新推荐文章于 2023-06-25 10:43:49 发布