当我运行这个程序时,它会在终端中打印一个奇怪的字符。谁能告诉我那是什么?
int main(){
char x=1;
printf("%c\n",x);
return 0;
}
这是因为您将 1(字符的 ASCII 值)分配给x
. 分配'1'
给x
。它会给出输出1
。
char x = '1';
printf("%c\n",x);
它从ASCII 表中
打印字符 1 (对您的平台做出合理的假设,即您不在 EBCDIC 平台上或其他东西上)
这取决于你想要什么作为输出。如果您认为您的代码给出了一些奇怪的输出,那么您当然想要 '1' 作为输出。为此,您应该替换您的声明
char x = 1;
至
char x = '1';
而已!你的问题就解决了!
C 中的字符通常应该使用字符来分配,而不是使用 ASCII 编码。例如:
char x = 'A';
printf("%c\n", x);
将在终端上打印字符“A”。通过给字符 1 的 ASCII 索引,你给它分配了 START OF HEADING 字符 (SOH)。如果您正在寻找“A”或“1”,那就是:
char x = 65; // x = 'A'
char y = '1'; // y = '1'
但就像我说的那样,这很尴尬,需要记忆 ASCII 才能阅读,所以分配数字是非常糟糕的做法。
您可以在以下位置找到 ASCII 表:http ://www.asciitable.com/