在C语言中可以进行数据的强制转换,比如float a = 100.678, 对a进行int型强制转换可以得到100。
请问这个过程是在编译器中实现的还是在程序运行过程中实现的?
具体是怎么实现的?
(希望有兴趣的朋友回答一下)
谢谢你的回答。
float型的数据在内存中用三个段来表示,分别是符号位、阶码段和尾码段,分别是1位、8位、23位。
就以b = (int) a为例,这个转换是直接截取a所在内存中相应段位的数据并赋值给b的;还是说先把数据提取出来,然后经过其它处理之后再赋值给b。
你查查这个指令cvttss2si
说白了汇编代码就是
cvttss2si eax,dword ptr [a]
mov dword ptr [b],eax
谢谢你的回答。
float型的数据在内存中用三个段来表示,分别是符号位、阶码段和尾码段,分别是1位、8位、23位。
你说只是读取整数部分的内存,那么是指读取这三个段位的哪些呢?