c++坑点:单引号的坑(单引号内多个字符)

   众所周知,在c++之中,双引号是用来表示其包括的内容为字符串,而单引号包括的内容表示其包括的为一个字符,那单引号的括起内容的实质是什么呢?

   于是,我开始了我的实践(作死)之路:

c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)

 

 

 

c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)

 

为什么当输出'AA'时,会输出这么神奇的数字16705?

 

下面我们就来研究一下这个问题:

c++坑点:单引号的坑(单引号内多个字符)c++坑点:单引号的坑(单引号内多个字符)

Int 类型占据四个字节,即16位二进制

A的二进制为0100 0001,因此它的数值为65.

当有两个AA时,其为0100 0001 0100 0001

当将二进制0100000101000001转换为十进制时,其数字为16705

为什么在有的编译器当超出四个字符时会出现警告甚至报错,因为在c++之中,int类型为四个字节,即十六位,而每个字符类型为一个字节即四位。当超过四个字符时,有的编译器会自动转换为更高位数据类型,即long甚至long long(尚待实验)