如何理解这个声明变量和变量内容矛盾的问题

img

img


我声明c的类型为整型,然而他是用单撇号包着的,他应该是字符型。这个地方该怎么理解。

最近看书正好看到,char是属于整形的,整形占四个字节,但字符只占一个字节,所以一些编译器运行一个字符常量中包含多个字符
vs 和 gcc 采用的方法是将后一个字符替换前一个字符,所以字符常量中有多个字符时,结果为最后一个字符

这是一种初始化int型的方式
将'1''0''1'三个字符(ascii码)按次序放入int型的4个字节中
如果你引号里超过4位就会无法编译通过
注意,跟'\101'的区别
\101是将ascii码101转义成一个字符,而'101'是三个字符
你可以将101换成100试试看,那么对应的值也变成了3223600

字符本身就是ASCII码表示的整型
比如 int a = 'A';是可以的