为什么这种情况可以’2’+2不可以2+2?

char a,b;
a=’2’+2;
b=2+2;
putchar(a);//输出4
putchar(b);//输出来的是正方形符号■

不知道为什么会这样,求解答,非常感谢

a='2'+2;是字符‘2’的后两个字符,是字符'4',输出的4也是字符‘4’
b=2+2,即把整数4赋值给字符b,那么是ASCII码值为4对应的字符。