ascii字符限制是255?

时间:2013-12-12 16:44:44

标签: c ascii

#include<stdio.h>
#include<conio.h>
main()
{
    int i=369;
    printf("%c",i);
    getch();
}



O/p
===
q

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

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

"%c"中的printf()获取int参数369,并将其转换为unsigned char,其值为369 & 255或{{ 1}}。字符代码113对应于使用ASCII编码的系统上的113。因此打印'q'

C11dr§7.21.6.18 c转换说明符
“如果不存在l长度修饰符,则将int参数转换为unsigned char,并写入生成的字符。”


[编辑]
典型的C系统具有8位'q',允许256种组合,因此上述char(某些系统具有其他& 255大小)。典型的C系统将值0到127分配给ASCII字符集 - 仅为代码0到127定义 。可能打印出的值超出该范围的值会发生变化。

答案 2 :(得分:0)

ascii的限制是255,但是369 = 0000 0001 0111 0001,而q的ascii代码是0111 0001,请看最后8位?你懂了!