我一直在看看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似乎更深入,我觉得在完成任何其他工作之前我应该完全理解这些基础知识。
答案 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时,输出为空。