【问题标题】:C program prints strange character [closed]C程序打印奇怪的字符[关闭]
【发布时间】:2013-10-23 16:18:25
【问题描述】:

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

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

【问题讨论】:

  • 你认为它应该打印什么?
  • ASCII 码 1 是开头的标题字符(这是不可打印的/导致标准输出上的怪异)。我想你想要'1' 就像其他人说的那样。

标签: c printing char


【解决方案1】:

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

char x = '1'; 
printf("%c\n",x);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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/

      【讨论】:

        【解决方案4】:

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

            char x = 1;
        

            char x = '1';
        

        就是这样!你的问题就解决了!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多