float类型参数进堆栈后变为double,要是按float类型取出怎么办?
float类型参数进堆栈后变为double,要是按float类型取出怎么办?
例如:float imax(float a, float b)
{
return a > b ? a : b;
}
假如当我把 4.5 和 5.5 作为实参传过去,那么将会把这两个数据以double类型(64位)存储在堆栈中,共128位。
但是当被调函数执行时会以float类型(32位)进行取出,那不就出错了吗?
求解释!!!
[解决办法]
囧!编译器既然知道怎么float正确转换到double,难道会不知道怎么由double再转回float么。
[解决办法]
楼主考虑的问题,是编译层面的问题
楼主的确对于类型转换有比较深刻的思考
建议楼主多动手写点测试代码
来验证自己的想法
有些东西编译器是完成了的
而有些东西编译器没有固定的行为
所以,正如4楼所说
尽量避免依靠编译器进行隐式类型转换
能够显化的,就写的清晰些吧