为什么printf(“%c”,1)返回笑脸而不是编码char为1
这是我的代码
#include int x,y; int main( void ) { for ( x = 0; x < 10; x++, printf( "\n" ) ) for ( y = 0; y < 10; y++ ) printf( "%c", 1 ); return 0; }
它会回归笑脸。 我到处搜索笑脸的代码或1的代码,但我没有找到任何链接或任何解释为什么1的char值返回笑脸,当1的ascii代码是SOH时。 我研究了这个问题的答案,但我没有找到解释为什么会发生这种情况的答案。
输出在不同的终端之间变化。 例如,在我的OS X默认终端上,不输出任何字符。
在你的情况下, ☺
的输出可能是由于某些历史原因 。 简而言之,这是因为将字节0x01
映射到U+263A
代码页437是MS-DOS的字符集。
因为1
不是可打印的字符代码。 如果你想要'1'
你需要用字符文字来写它:
printf( "%c", '1' ); // ^^^
如果您使用数字,您将从ASCII表中选择一个字符编号,如果您使用char
您将找到该字符。
示例:此代码打印ASCII字符编号65:
printf( "%c", 65 ); // Outputs: A
此代码打印字母A:
printf( "%c", 'A' ); // Outputs: A