C中printf语句中字符和说明符的加法/减法

C中printf语句中字符和说明符的加法/减法,c,C,我刚刚开始学习C语言,以前我的编程经验主要是使用Python。最让我困惑的一件事是如何添加/减去单个字符,以及printf语句如何工作,特别是关于格式说明符 例如,在下面的代码中 #include <stdio.h> int main() { char c1, c2; c1 = 'A' + '8' - '4'; c2 = 'A' + '8' - '5'; printf("%c, %d\n",c1,c2); return 0; } #包括 i

我刚刚开始学习C语言,以前我的编程经验主要是使用Python。最让我困惑的一件事是如何添加/减去单个字符,以及printf语句如何工作,特别是关于格式说明符

例如,在下面的代码中

#include <stdio.h>

int main() {
  char c1, c2;
  c1 = 'A' + '8' - '4';
  c2 = 'A' + '8' - '5';
  printf("%c, %d\n",c1,c2);
  return 0;
}
#包括
int main(){
字符c1,c2;
c1=‘A’+‘8’-‘4’;
c2=‘A’+‘8’-‘5’;
printf(“%c,%d\n”,c1,c2);
返回0;
}
返回E,68

c1上做加法,c2上做减法。这里到底发生了什么?此外,在printf语句中,我们可以看到格式字符串中的第二个说明符被指定为%d,它表示一个十进制整数。但是,相关参数c2是一个字符,并打印出68。这里也发生了什么


提前谢谢。

正如@tadman提到的,C中的
char
只是一个数值

所以c1可以归结为'A'(=65)+'8'(=56)-'4'(=52)=69 c2可以归结为‘A’(=65)+‘8’(=56)——‘5’(=53)=68


printf
语句中的格式说明符只会更改这些数值的打印方式。在C
char
中,格式说明符只是一种普通的数字类型,因此可以相应地进行加减<代码>'4'在基于ASCII的系统上是52。“字符”唯一存在的时间是在显示它们时,这是终端或GUI的工作,而不是C。掌握关键…你应该做一些实验,例如(字符C='A';C