混淆%c和ASCII码

时间:2012-09-20 16:07:59

标签: c ascii asciiencoding

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

ASCII值为0到127 我知道这必须是一些循环的东西,但我想要一个明确的解释。谢谢

2 个答案:

答案 0 :(得分:3)

号码2293552对应0x22ff30。当printf将其解释为ASCII时,它会忽略包含0x30的最后8位之外的所有位,这是'0'的代码。

来自C99标准:

  

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

答案 1 :(得分:0)

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