深入剖析printf
来源:互联网 发布:程序员多少钱一个月 编辑:程序博客网 时间:2024/06/05 00:39
printf主要是给控制台打印字符串或者数字等。
1、printf的参数列表printf ( const char *format, ... )
2、printf首先调用va_start.然后调用_output_l,最后调用_ftbuf
3、_output_l会解析字符串并调用va_arg,获取省略号的值,调用WRITE_STRING写到控制台上。
4、WRITE_STRING会调用write_char,write_char会调用_putc_nolock,最终调用_flsbuf。
之前有人问printf("%f",1);为什么打印的是0。
因为这种情况在va_arg(vl,double)获取到值是0
printf的va_arg的汇编代码如下:
623D9A24 mov edx,dword ptr [ebp+14h]
623D9A27 add edx,8
623D9A2A mov dword ptr [ebp+14h],edx
623D9A2D mov eax,dword ptr [ebp+14h]
623D9A30 mov ecx,dword ptr [eax-8]
623D9A33 mov edx,dword ptr [eax-4]
623D9A36 mov dword ptr [tmp],ecx
623D9A3C mov dword ptr [ebp-29Ch],edx
阅读全文
0 0
- 深入剖析printf
- printf函数实现的深入剖析
- printf函数的实现深入剖析
- printf函数实现的深入剖析
- printf函数实现的深入剖析
- printf函数实现的深入剖析
- printf 函数实现的深入剖析[转载]
- printf 函数实现的深入剖析
- 深入剖析printf函数 合集pdf文件
- 深入printf
- 深入printf
- 深入printf
- 深入printf
- 深入printf
- 剖析printf函数
- 深入剖析printf函数(下):---形参列表和格式化输出是如何做到的?
- 深入剖析printf函数(下):---形参列表和格式化输出是如何做到的?
- 深入剖析printf函数(上):如何不借助第三方库在屏幕上输出"Hello World"?
- Day19
- Android三方登录之新浪微博登录
- pat A1046
- (DFS)N皇后问题--HDOJ
- java-jvisualvm远程监控tomcat
- 深入剖析printf
- Redis Sorted-Sets数据类型
- Unity3D 官方文档 UGUI总览 自动布局组件的介绍
- NYOJ 找球号(二)(哈希表)
- 使用MyBatis-generator 自动生成MyBatis mapper代码
- HDU-1257-最少拦截系统
- React动画之react-transition-group使用
- jQuery中each的用法之退出循环和结束本次循环
- spring cloud 学习(四) Hystrix