【问题标题】:How does C retrieve the specific ASCII value?C 如何检索特定的 ASCII 值?
【发布时间】:2014-01-22 17:47:36
【问题描述】:

在下面的程序中

#include<stdio.h>
int main()
{
 int k=65;
 printf(" The ASCII value is : %c",k);
 return 0;
 }

输出是 "The ASCII Value is : A" 。 我只是不明白 %c 是如何带来该数字的相应 ASCII 值的? 我的意思是整数值如何引用 %c(而不是 %d)并且仍然带来 ASCII 值? 这个过程是如何工作的?请解释一下。

【问题讨论】:

  • 我无法弄清楚这个问题实际上在问什么。你问printf是怎么实现的?
  • 这里是工作的源代码:(GNU C 版本)vprintf
  • 这样想。假设您被要求编写一个程序,该程序将一个数字作为输入,并以 ASCII 码打印出相应的字母。你会怎么写那个程序?
  • +1 不错的问题,但人们对它投了反对票。

标签: c ascii


【解决方案1】:

不是“%c”在做这件事。当您运行程序时,它所做的只是将一系列字节(数字)输出到标准输出。如果您使用“%c”,它将输出一个值为 65 的字节,如果您使用“%d”,它将输出两个字节,一个值为 54 的 6,一个值为 53 的 5。然后,您的终端显示这些字节作为字符字形,根据它使用的编码。如果您的终端使用的是兼容 ascii 的编码,那么 65 将是“A”的代码。

【讨论】:

    【解决方案2】:

    简短版本:您的操作系统有一个表格,该表格将图形符号链接到每个整数,并且对于 65,它已将图形链接为“A”。 ASCII 标准说 65 应该链接到人类可以读为“A”的图形。

    【讨论】:

      【解决方案3】:

      我认为以下答案对您有所帮助。归功于 Sujeet Gholap。

      %c 的工作方式如下: 1.取变量的最低有效字节 2.将该字节解释为ASCII字符

      就是这样

      所以,当您查看 65 的四个字节(十六进制)时,它们看起来像

      00 00 00 41

      %c 看着 41

      并将其打印为 A

      就是这样

        #include<stdio.h>
        int main()
        {
         int k=65 + 256;
          printf(" The ASCII value is : %c",k);
           return 0;
         }
      

      考虑一下这段代码

      k 在哪里

      00 00 01 41

      这里,即使是现在,最后一个字节也是 41

      所以,它仍然会打印 A

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 1970-01-01
        相关资源
        最近更新 更多