【问题标题】:ascii character limit is 255?ascii字符限制是255?
【发布时间】:2013-12-12 16:44:43
【问题描述】:
#include<stdio.h>
#include<conio.h>
main()
{
    int i=369;
    printf("%c",i);
    getch();
}



O/p
===
q

在这里,将 'q' 作为输出。

我怀疑 ascii 字符限制是 255 。但是为什么它给出'q'作为输出呢?

【问题讨论】:

  • 好吧,如果你看一下 ascii 图表:asciitable.com 你会看到限制是 128。
  • @Scotty Bauer 我以为限制是 127。

标签: c ascii


【解决方案1】:

它被转换为一个字节。 369 % 256 = 113 = 'q'

【讨论】:

    【解决方案2】:

    printf() 中的"%c" 采用int 参数369 并将其转换为具有369 &amp; 255113 值的unsigned char。字符代码 113 对应于使用 ASCII 编码的系统上的'q'。这样'q'就被打印出来了。

    C11dr §7.21.6.1 8 c 转换说明符
    “如果不存在 l 长度修饰符,则将 int 参数转换为无符号字符,并写入结果字符。”


    [编辑]
    典型的 C 系统有一个 8 位的 char,它允许 256 种组合,因此上述 &amp; 255(一些系统有其他 char 大小)。典型的 C 系统将值 0 到 127 分配给 ASCII 字符集 - 为代码 0 到 127 定义。可能打印出的值超出该范围的文本会有所不同。

    【讨论】:

      【解决方案3】:

      ascii 的限制是 255,但是 369=0000 0001 0111 0001,而 q 的 ascii 码是 0111 0001,看到最后 8 位了吗?你明白了!

      【讨论】:

      • 典型的 UCHAR_MAX 是 255,这就是为什么 369 被截断为 8 位。 ASCII 范围是 0 到 127。
      • 更准确地说,扩展的ASCII是0-255
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2018-01-15
      • 2012-04-04
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      相关资源
      最近更新 更多