printf格式化输出时动态指定字符宽度

     笔者最近开发的项目中,经常要打印一些地址信息。而开发的软件既要在32位的cpu上运行,还要在64位CPU上运行。之前做的很笨,为了兼容,每次遇到需要打印的地方,就得用宏区分开,写两句打印,很是麻烦。eg:

     #if ( CPU == IA32)

      printf("The address of var is %08x/n", &var);

     #else if(CPU == IA64)

      printf("The address of var is %016x/n",&var);

     #endif

每次都这么弄,被弄烦了,就想偷懒,把这两句统一成一句。到处找资料,总算搞定:用*来完成动态指定字符宽度。代码如下:

     printf("The address of var is %0*x/n",2*sizeof(void *), &var);

   在32位机和64机上,2*sizeof(void *)的值分别是8和16,0后面的*分别被替代为8和16。实现了大一统。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值