c语言中以16进制输出时%0x和%x有什么区别?

2024-11-05 20:39:41
推荐回答(4个)
回答(1):

%0x和%x都是以十六进制格式右对齐输出,输出的是无符号数。

    在不指定占宽情况下以数据的实际宽度输出,而系统又自动消除左端的无效0,所以%0x和%x在显示效果上没有什么不同。

    在指定占宽的情况下,在指定的输出占宽范围内,实际数据宽度不足时用%0x作控制的前面用0补齐,而用%x作控制的前面用空格补齐。如:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    int a=0x37;
    printf("%04X\n%4X\n",a,a);
    return 0;
}

输出是:

0037

    37

若实际数据宽度大于指定宽度,则按实际宽度输出。



回答(2):

标准C语言库函数fprintf/printf格式字符串的转换说明形式是这样的:

%[标志][最小输出宽度][.精度][长度修正符]类型
方括号括起来是可选项。

标志是0或多个标志字符,可以是任意顺序,常用有以下几个:
- 左对齐,缺省是右对齐。
+ 带符号的值前面总是有个符号,也就是正数前面有+号,负数前面有-号。
0 输出值的宽度小于最小宽度的话,用0填充,缺省是用空格填充。

0是一个标志字符,意思就是用0填充

回答(3):

char x=5;

printf("%x\n",x);得到输出5
printf("%0x\n",x);得到输出05

回答(4):

你编程试试不就知道了吗。