忽然记起C++ PRIMER中提到过,double类型的数据,在CPU上运行会比float要快.
其实,它这么说,是有些不严谨的.我们知道,CPU中的浮点运算,都是用一个叫做扩展精度寄存器来运算的.这个扩展精度寄存器是80位大小的(也就是10个字节).也就是说float和double都是扩展成10个字节来计算的.
可能C++ PRIMER作者的意思是,在存回结果的时候,要进行截断,于是有更大精度范围的double自然会比float快.
但是在C语言里面,扩展精度被实现为long double,这个有12个字节,主要是考虑到字节对齐(也和效率有关)的问题,所以多用了2个字节.所以,应该是long double的速度是最快的.
但这同时也带来了空间上得一点浪费.
本人小菜,说的不对,望各位高手指教.