2020-02-01 16:14发布
yoz 发表于 2013-2-3 10:22 我又做了一个实验,看来float转换为int也因机器而已,在windows的vc6上,以下程序测试结果是 5.000000 #inc ...
最多设置5个标签!
int和float/double之间的转换是会调用转换函数的,因为类型不兼容。
char、short、int、long、long long/int64以及它们的unsigned版本转换是不需要调用转换函数的,因为类型是兼容的。
同样,C++专门有转换函数的概念,只不过并不以函数的形式表现,而是以操作符重载的形式体现。
至于你6楼所说的%d会输出0而不是1085800448是因为变量存储的地址不一致所引起的,而不是大小端。float会使用FPU,很遗憾,%d不访问FPU,它所访问的寄存器根本就不是float所使用的寄存器,所以输出一个无法确定的值。孟子曰:以若所为(float所在的FPU寄存器),求若所欲(%d所用的CPU寄存器),犹缘木而求鱼也。
一周热门 更多>