%X格式说明符表示整数

时间:2014-10-30 17:53:38

标签: c

我一直在看看Zed A. Shaw"以艰难的方式学习C"教程。他的一个额外信用问题(在练习9中)要求我将char[4]表示为int

在我四处寻找之后,我遇到了一个同样问题的SO问题,因此设法得出了答案:

int i;
int intName = 0;

for(i = 0; i < 4; i++){
    intName = intName + name[i];
}

printf("intName: %d\n", intName);
printf("intName: %X\n", intName);

输出:

intName: 291
intName: 123

手边的名字是&#34; Zed&#34;,我计算了ASCII十进制值,它们确实加起来为291,这很好。但是在搜索之后,我无法找到关于为什么%X会返回123的任何解释。

在这种情况下,此格式说明符的作用是什么?如果我能得到一些关于发生了什么的详细答案,那将是非常棒的。学习C似乎更深入,我觉得在完成任何其他工作之前我应该​​完全理解这些基础知识。

1 个答案:

答案 0 :(得分:1)

  

然而,在搜索之后,我无法找到有关为什么%X会返回123的任何解释。

它只是打印数字的十六进制表示。十六进制123 =十进制291.从printf man page(我碰巧找到的第一个):

  

o,u,x,X
  unsigned int参数转换为无符号八进制(o),无符号十进制(u)或无符号十六进制(x和X)表示法。字母abcdef用于x次转换;字母ABCDEF用于X转换。精度(如果有)给出必须出现的最小位数;如果转换后的值需要较少的数字,则在左侧用零填充。默认精度为1.当使用显式精度0打印0时,输出为空。