每个ASCII字符都有一个整数值。打印字符时,下层系统检查变量值char
并打印相应的ASCII字符。值本身不打印。请参阅ASCII table以供参考。
char var = '7'; // var's value is actually 55.
char other = 55; // This is same as '7'
当计算两个数字字符的总和,你的情况“5”和“7”,你必须减去字符“0”,从他们皈依“5”和“7”,以数字5和7。
char first = '5' - '0'; // Is actually 53 - 48 = 5
char second = '7' - '0'; // Is actually 55 - 48 = 7
char result = first + second; // 5 + 7 = 12
// When you print result, you will not see "12" printed. Instead you see a form feed special character.
char test = '5' + '7'; // 53 + 55 = 108, which is letter 'l'
你要的char
值转换为字符串打印的实际值。你可以用itoa()
转换。
char result = ('5' - '0') + ('7' - '0');
char buf[5];
memset(buf, 0, sizeof(buf));
itoa((int)result, buf, 10);
printf("%s\n", buf);
这是怎样的问题,如果你扩大你的代码,一个完整的计划,我们可以只复制和粘贴,以编译和运行, – hugomg
,这将大大受益?我使val为0x12 - 换页符。 –
@MartinJames不是'0x12'而是十进制'12'。 –