-2

当我运行这个程序时,它会在终端中打印一个奇怪的字符。谁能告诉我那是什么?

int main(){
    char x=1;
    printf("%c\n",x);
    return 0;
}
4

4 回答 4

3

这是因为您将 1(字符的 ASCII 值)分配给x. 分配'1'x。它会给出输出1

char x = '1'; 
printf("%c\n",x);
于 2013-10-23T16:20:35.883 回答
2

它从ASCII 表中
打印字符 1 (对您的平台做出合理的假设,即您不在 EBCDIC 平台上或其他东西上)

于 2013-10-23T16:20:54.557 回答
0

这取决于你想要什么作为输出。如果您认为您的代码给出了一些奇怪的输出,那么您当然想要 '1' 作为输出。为此,您应该替换您的声明

    char x = 1;

    char x = '1';

而已!你的问题就解决了!

于 2013-10-23T17:45:48.863 回答
0

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/

于 2013-10-23T16:59:03.453 回答