我一直在看Zed A. Shaw的“Learn C hard way”教程。他的一个额外信贷问题(练习9)要求我代表char[4]
作为int
。%用于表示整数的X格式说明符
跑遍了全后,我来到了一个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
手头的名字是“Zed”,我计算了ASCII十进制值,他们确实加起来为291,这很好。然而,在搜索后,我找不到任何解释,为什么%X
将返回123.
在这种情况下,此格式说明符是做什么的?如果我想得到一些关于发生什么的详细答案,那将是非常棒的。学习C似乎更深入,我觉得我应该完全理解这些基本知识,然后再转向其他任何东西。
我不认为你的解决方案是该问题的作者想到的。您只需添加字符的序数值,例如'“Zed”'和'“edZ”'会产生相同的结果,就像其他许多不同字符的组合一样。我认为你需要更仔细地阅读练习。 (我假设这个问题本身是相当明确的,但我没有检查。) – 2014-10-30 18:11:55
当以十六进制打印一个数字时,最好在它前面加上'0x'或'0X'来清楚阅读器(假设读者对C语法有所了解):'printf(“intName:0x%X \ n”,intName);' – 2014-10-30 18:13:02
@KeithThompson - 我明白你的意思,可能是这样的情况,Extra Credits部分相当含糊,主要是帮助你探索你通常不会探索的东西。如果你希望看看Zed A. Shaw的教程练习9以更好地了解他所要求的内容。至于你的第二个评论,你是对的,最好用一个0x表示十六进制。谢谢! – Juxhin 2014-10-30 18:16:44