1

为什么会printf("%c ", 2293552);打印0

ASCII 值是从 0 到 127 我知道这一定是一些循环的东西,但我想要一个清楚的解释。谢谢

4

2 回答 2

3

数字2293552对应0x22ff30。当printf将其解释为 ASCII 时,它会忽略包含 的最后八位之外的所有位0x30,即'0'.

来自 C99 标准:

7.19.1.6.8 -- %c:如果不存在l长度修饰符,则将 int 参数转换为unsigned char,并写入结果字符。

于 2012-09-20T16:10:32.573 回答
0

可能%c只使用参数的低位字节,即2293552 & 255 = 48 = '0'.

于 2012-09-20T16:11:00.483 回答