设为首页 加入收藏

TOP

关于printf函数的一些理解
2014-11-23 17:51:31 】 浏览:5243
Tags:关于 printf 函数 一些 理解

  问题:


  调用


  printf("%.1f%s",0.0,"a");


  的输出是


  0.0a


  而调用


  printf("%.1f%s",0,"a");


  的输出是


  0.0@


  第二个输出的字符并不是“a”(ASCII码97),而是“@”(ASCII码64),在VC 6下。


  为什么?具体原因。


  解答:


  1,查看两句话的反汇编1)  printf("%.1f,%s", 0.0,"a");


  004113BE mov   esi,esp


  004113C0 push offset string "a" (41581Ch)


  004113C5 sub   esp,8


  004113C8 fldz


  //将0.0压入到st(0)中


  004113CA fstp qword ptr [esp]


  //将st(0)中的内容存放到qword ptr [esp]指定的位置(4*4个字节=8个字节)


  004113CD push   offset string "%.1f,%s" (415800h)


  004113D2 call dword ptr [__imp__printf (4182BCh)]


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用注册表修改桌面背景 下一篇C/C++qsort()快速排序的用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目