- 论坛徽章:
- 0
|
本帖最后由 chengengsen 于 2011-12-07 09:34 编辑
今天看了C primer plus 第222-223页关于函数传参的部分,有点不明白,说出来大家讨论一下:- int imax();
- int main()
- {
- ..........
- imax(3.0,5.0);
- ...........
- }
- int imax() int n,int m;
- {
- ............
- }
复制代码 1.作为参数传递时,float类型会被转换为double类型,所以两个double类型的数值被压入栈,imax()从栈中读取两个int类型数值是,它会读出64位数据,读取的参数不是我们希望的
2.- int imax(int,int);
- int main()
- {
- ..........
- imax(3.0,5.0);
- ...........
- }
- int imax(int n,int m)
- {
- ............
- }
复制代码 这时:float会自动转换为int类型
问题:
是先把参数转换为int类型再压栈吗?具体的编译原理是?
有点懵了,什么时候参数传递float要转换为double?能举例吗?
int imax()这种老式声明工作中还有在用吗?
谢谢 |
|