关于printf函数的一些理解
来源:优易学  2010-1-14 19:38:02   【优易学:中国教育考试门户网】   资料下载   IT书店

  问题:

  调用

  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)]

[1] [2] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训