c语言的参数传递
来源:互联网 发布:阿里巴巴和淘宝是谁的 编辑:程序博客网 时间:2024/05/01 06:46
c语言参数传递讲解
首先给大家看一个样例程序
int main()
{
float n1 = 3.0;
double n2 = 3.0;
long n3 = 200000000;
long n4 = 1234567890;
printf("%.1e %.1e %.1e %.1e\n",n1,n2,n3,n4);
printf("%ld %ld\n",n3,n4);
printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
return 0;
}
输出结果是
3.0e+000 3.0e+000 3.1e+046 3.4e+265
200000000 1234567890
0 1074266112 0 1074266112
Process returned 0 (0x0) execution time : 0.067 s
可能你会有一点疑问,所以说一下c语言参数传递的东西,
在这一句代码中
printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
首先printf函数中,系统把传进来的参数放在一个堆栈的地方,然后调用的时候就将n1n2n3n4全部放在堆栈里边,所以n1是4个字节,因为3.0被系统默认为doubble类型的,转换成为了8个字节,n2也是8个字节,其他的都是4个字节,,然后printf按照参数说明就是ld读取4个字节,所以就是浮点数的前4个字节,然后按照顺序依次向下读取,所以就是上述的结果,但是不同的计算机可能有所不同。
首先给大家看一个样例程序
int main()
{
float n1 = 3.0;
double n2 = 3.0;
long n3 = 200000000;
long n4 = 1234567890;
printf("%.1e %.1e %.1e %.1e\n",n1,n2,n3,n4);
printf("%ld %ld\n",n3,n4);
printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
return 0;
}
输出结果是
3.0e+000 3.0e+000 3.1e+046 3.4e+265
200000000 1234567890
0 1074266112 0 1074266112
Process returned 0 (0x0) execution time : 0.067 s
可能你会有一点疑问,所以说一下c语言参数传递的东西,
在这一句代码中
printf("%ld %ld %ld %ld\n",n1,n2,n3,n4);
首先printf函数中,系统把传进来的参数放在一个堆栈的地方,然后调用的时候就将n1n2n3n4全部放在堆栈里边,所以n1是4个字节,因为3.0被系统默认为doubble类型的,转换成为了8个字节,n2也是8个字节,其他的都是4个字节,,然后printf按照参数说明就是ld读取4个字节,所以就是浮点数的前4个字节,然后按照顺序依次向下读取,所以就是上述的结果,但是不同的计算机可能有所不同。
0 0
- C语言的参数传递
- C语言的参数传递
- C语言的参数传递
- c语言的参数传递
- C语言--参数的传递
- c语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言 参数传递
- C语言参数传递
- c语言传递参数
- C语言的参数传递方式
- C语言函数参数的传递
- 关于C语言参数传递的新知
- C语言函数参数的传递详解
- JSON 解析
- c语言的字符串转换函数
- 实验数据集大全
- @ManyToOne和@OneToMany双向关联
- misc
- c语言的参数传递
- IT之路的成长故事——星空
- 重定向输入与输出
- c语言的存储类
- (转载)spring jar包详细介绍
- Android多线程断点续传下载的实现
- Linux man命令的使用方法
- 数据库优化实践【性能检测工具篇】
- Window下安装Cygwin