微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这种格式化程序是什么意思?

如何解决这种格式化程序是什么意思?

|
printf (\"%#p [ buf  ] (%.2d) : %s \\n\",buf,strlen (buf),buf);
我以前从未见过
%#p (%.2d)
,它是如何工作的?     

解决方法

从http://www.cplusplus.com/reference/clibrary/cstdio/printf/:   与o,x或X指定符一起使用时,对于不等于零的值,该值分别以0、0x或0X开头。      与e,E和f一起使用时,即使后面没有数字,它也会强制写入的输出包含小数点。默认情况下,如果没有数字跟随,则不写小数点。      与g或G一起使用时,结果与e或E相同,但不会删除尾随零。 因此,在您的情况下,它似乎无济于事,因为
p
用于打印指针地址。我猜有些编译器可能对此有所不同,但是我找不到任何提及。     ,
p
指定打印地址(即指针)。
#
标志指定\“ alternate form \”,在这种情况下,可能在输出前加上pre5ѭ。     ,这是格式标识符的标志。 它很可能会在指定值之前打印出0x(但我尚未检查TBH) 在这里找到一个很好的解释     ,不确定是否有效使用\'#\'标志: 与o,x或X指定符一起使用 值以0、0x或0X开头 分别表示不同的值 大于零。 与e,E和f一起使用 强制写入的输出包含 小数点,即使没有数字 会跟随。默认情况下,如果没有 后跟数字,小数点不 书面。 与g或G一起使用 与e或E相同,但 尾随零不会被删除。 它很可能会为指针打印另一种格式的表格,将0x附加到地址之后。     ,对于您的情况(
p
转换),根据手册页,结果是不确定的。无论如何,
%p
%#p
在我的机器上打印相同的值(看起来像0x7FFFF000)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。