printf中的一个小问题 今天的问题由这样一段小的代码引入 int main() { short x = -1; printf("%u", x); return 0; } 直觉上来说,这段代码的输出应该是65535,因为65535是双字节无符号数所能表达的最大的值。 正常来说,我们输出负数使用的是%d,这里虽然我们使用了%u,但是他的输出结果并不是我们想象的65535,而是4294967295。这是四字节的数所能表示的最大值。 但是为什么是这样的呢?按照我曾经的理解,printf不过是用一个指针逐步解析我们的参数…