C语言强制转换问题

在C语言中可以进行数据的强制转换,比如float a = 100.678, 对a进行int型强制转换可以得到100。
请问这个过程是在编译器中实现的还是在程序运行过程中实现的?
具体是怎么实现的?
(希望有兴趣的朋友回答一下)

C语言是编译时转换的
其实你说法不正确,因为值是一般只有运行时才知道的,但是代码时编译器生成的,转换方法也是编译器编译的时候决定的所以不能是什么时候实现的
C++改成了四种转换reinterpret_cast static_cast dynamic_cast const_cast追问

谢谢你的回答。
float型的数据在内存中用三个段来表示,分别是符号位、阶码段和尾码段,分别是1位、8位、23位。

就以b = (int) a为例,这个转换是直接截取a所在内存中相应段位的数据并赋值给b的;还是说先把数据提取出来,然后经过其它处理之后再赋值给b。

追答

你查查这个指令cvttss2si
说白了汇编代码就是
cvttss2si eax,dword ptr [a]
mov dword ptr [b],eax

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-29
在程序运行过程中实现的,原理是不读取变量的所有内存,只读取整数部分的内存追问

谢谢你的回答。
float型的数据在内存中用三个段来表示,分别是符号位、阶码段和尾码段,分别是1位、8位、23位。

你说只是读取整数部分的内存,那么是指读取这三个段位的哪些呢?

相似回答