我的程序打印一些仲裁ascii字符串

时间:2011-06-16 05:21:13

标签: c

我写了以下程序

int main ()
{
char a=0xf;
a=a+1;
printf("%c\n",a);
}

以上程序的输出是我无法理解的。它给了我一些我无法理解的字符。是否有可能找到我在上面的程序中得到的字符的ASCII码所以我明白它是什么印刷。

修改

根据我读到的回复,我进一步加入了我的困惑

如果我写下如下声明

char ch ='Z';

然后将存储在ch,

1)人物Z
2)Z的ASCII值 3)Z和单引号一样 4)(1)和(2)

5 个答案:

答案 0 :(得分:2)

16的ASCII值(0x0f + 1 = 0x10)是DLE (data link escape),这是不可打印的字符。 只需像这样打印整数。

printf("%d\n",a);

答案 1 :(得分:1)

0到31之间的字符是非打印字符(在您的情况下,您选择了0xF,十进制为15)。许多不起眼的是为teletypes和其他古代设备而设计的。请尝试使用32到126之间的字符。有关详细信息,请参阅http://www.asciitable.com

在回答第二个问题时,字符存储十进制值90(因为字符实际上是1字节整数)。 'Z'只是表示Z应被视为字符而不是变量。

答案 2 :(得分:1)

你可以修改你的程序:

int main ()
{
  char a=0xf;
  a=a+1;
  printf("Decimal:%u Hexa:%x Actual Char:|%c|\n",a,a,a);
}

Printf可以为角色使用不同的格式。

答案 3 :(得分:0)

打印字符0x10(16)。

如果需要输出,请更改打印输出值(在本例中为字符,十六进制值,十进制值):

printf("%c - %x - %d\n", a, a, a);

答案 4 :(得分:0)

#include<stdio.h>

int main ()    
{

    char a='z';                 \\\ascii value of z is stored in a i.e 122

    a=a+1;   \\\a now becomes 123

    printf("%c",a);   \\\ 123 corresponds to character '{' 

}