我写了以下程序
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)
答案 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 '{'
}