【发布时间】:2015-01-16 10:33:32
【问题描述】:
我有这行代码:
printf("%c\n", '65');
此代码将5 打印到控制台。
我知道65 不是有效字符,也没有分配任何ASCII 值,那么这个输出背后的原因是什么?
【问题讨论】:
-
@Gopi 哦!哪一个?
-
但是
65被分配给了一个有效的ASCII字符!我什至不必查找它;这是A。 -
事实证明它确实可以编译,但它大错特错,我很生气。为什么这会产生警告而不是错误? @Jongware 是
65而不是'65',请看我的回答。 -
@iharob:不,OP 是正确的,因为这仍然是有效的语法。但是,它是特定于实现的,因此报告的输出可能因编译器而异。
-
C 允许它作为实现定义的行为,但这并不意味着代码在任何编译器上都有意义。 GCC 似乎打印了文字中最右边的字符,这取决于 GCC 的实现。它与字节序无关。