众所周知,在c++之中,双引号是用来表示其包括的内容为字符串,而单引号包括的内容表示其包括的为一个字符,那单引号的括起内容的实质是什么呢?
于是,我开始了我的实践(作死)之路:








为什么当输出'AA'时,会输出这么神奇的数字16705?
下面我们就来研究一下这个问题:


Int 类型占据四个字节,即16位二进制
A的二进制为0100 0001,因此它的数值为65.
当有两个AA时,其为0100 0001 0100 0001
当将二进制0100000101000001转换为十进制时,其数字为16705
为什么在有的编译器当超出四个字符时会出现警告甚至报错,因为在c++之中,int类型为四个字节,即十六位,而每个字符类型为一个字节即四位。当超过四个字符时,有的编译器会自动转换为更高位数据类型,即long甚至long long(尚待实验)
本文深入探讨了C++编程语言中,如何使用单引号和双引号定义字符和字符串,以及当两个字符被当作整数处理时,其背后的二进制与十进制转换原理。通过具体实例解释了为何'AA'会输出为16705,揭示了编译器处理超长字符时的自动类型提升机制。
&spm=1001.2101.3001.5002&articleId=103265992&d=1&t=3&u=845717e93a134c528682242d654e7a54)
1569

被折叠的 条评论
为什么被折叠?



