为什么printf("%c ", 2293552);
会打印0
?
ASCII值为0到127 我知道这必须是一些循环的东西,但我想要一个明确的解释。谢谢
答案 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'
。