根据定义,字符只是小整数,所以char变量和 常量与算术表达式中的整数相同。
这是否意味着我们可以从int ??
中减去char变量我写了一小段代码:
#include <stdio.h>
main()
{
int a ;
int c;
a = 1;
c = 1 - '0' ;
printf("%d", c);
}
然而它给了我输出= -47 ...
我做错了什么?我指定的变量是否具有正确的类型??
答案 0 :(得分:6)
预期输出。 '0'
是一个char
值,因为您的编译器可能使用ASCII编码,其值为48.这将转换为int
并从1
中减去。它给出了值-47
。
所以程序会按照预期的方式完成,而不是你希望它会做什么。至于你做错了什么,很难说。我不确定你希望程序做什么,或者你想解决什么问题。
答案 1 :(得分:3)
转换为整数时,'0'-'9''
中的字符的值为48-57('0'= 48,'1'= 49等)。详细了解ASCII Values。在数值计算中使用时,首先它们将转换为int
,因此1- '0' = 1-48 =-47
。
答案 2 :(得分:2)
您在这里将实际操作与表示形式混合在一起。 printf
根据指定的格式输出数据 - 在您的情况下为整数。如果要将其打印为字符,请使用%d
切换%c
。
答案 3 :(得分:1)
你正在做的是使用字符的ASCII代码处理,每个字符都分配了一个ASCII值。
现在,使用每个字符的ASCII播放一些内容,您可以执行以下操作:
int a;
a = 'a' - 'A' ;
printf("%d", a);
得到32作为输出,由于ASCII值为'a'= 97而'A'= 65,那么你有97-65 = 32
答案 4 :(得分:0)
我认为这可以让你更清楚地理解......
#include <stdio.h>
main()
{
int a ;
a = 1;
printf("%d", char(a+48));
//or printf("%d", char(a+'0'));
}