免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14405 | 回复: 5
打印 上一主题 下一主题

printf("%0*X\n",...) 是什么意思啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-17 19:24 |只看该作者 |倒序浏览
请教一下:
#include <stdio.h>
#include <limits.h>
#define WORD unsigned int
#define NBYTES sizeof(WORD)
#define NBITS (NBYTES * CHAR_BIT)
#define NXDIGITS (NBYTES*2)

void main()
{
        WORD n=0;
        int i,j;
        for (j = 0; j < 2; ++j)
                for(i = 0;i<NBITS;++i)
                {
                        n^=(1<<i);
                        printf("%0*X\n",NXDIGITS,n);//这条语句没有看明白。。。。
                }
       

       
}

论坛徽章:
0
2 [报告]
发表于 2008-08-17 19:34 |只看该作者
我猜一下,不对的请大家指教
  printf("%0*X\n",NXDIGITS,n);
0是字符宽度不足指定的时,左边补的是0
*是指定的宽度,估计是NXDIGITS
X就是以16进制输出的意思,对应是n



我是在太懒了,估计就是这个意思,有心人试验一下,^_^

论坛徽章:
0
3 [报告]
发表于 2008-08-17 19:35 |只看该作者
read more.
"NXDIGITS" is taken as '*'

论坛徽章:
0
4 [报告]
发表于 2008-08-17 19:35 |只看该作者
>printf("%0*X\n",NXDIGITS,n);
%0*X中0表示用前导零而不是空格填充字段宽度
X表示用十六进制打印n
*表示%0*X所打印的数的宽度由NXDIGITS指定


*   用于实现printf打印的可变宽度

论坛徽章:
0
5 [报告]
发表于 2008-08-17 19:39 |只看该作者
谢谢了

论坛徽章:
0
6 [报告]
发表于 2008-08-17 19:51 |只看该作者
X表示强制转换为十六进制输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP