C语言char类型到底有什么作用,理解不了这个类型

问题遇到的现象和发生背景 C printf plus看书自学中,基本可以弄明白前面学到的基本函数和数据类型,其实也就只学到printf 和 scan_s,和自己创建的函数,整数数据类型核心要理解的也就是取值范围和占用问题,现在遇到一个概念问题,前面学到的打印函数和scanf函数都是可以直接上手用的,char函数实在是理解不了,我百度了一天发现大部分回答都还是以取值范围也就是节省空间回答的,可我试了很久发现即使unsigned char也实现不了一个简单的加减乘除。用单引号字符常量只能输入一个字符,char cat ='A';这种初始化一个A有啥用,输出还是显示的A,用char cat = 300;这种变量写法,输出也是码表里的各种符号,书中后面提到的转义序列我也试了使用任何数据类型都可以完成,现在一时陷进了死循环里,实在理解不了这个概念,在实际应用中char到底起到什么作用,赋值一个字母又有什么实际用途。初始化各种符号键盘也都可以直接打出来,搞不明白
问题相关代码,请勿粘贴截图
    unsigned char b =100;
printf("b+155 =%d",b+155+10);

return 0;

这里使用char类型用%d输出为什么数值已经超过最大值还是能正常显示

烦请各位有时间了能解答下

我想要达到的结果