关于单引号,

看《c陷阱与缺陷》,1.5节,有介绍单引号的。想看看在c++中的情况,在网上搜了下,做了测试。

环境:win7,vs2013.

大致说的是,单引号括起来的是给整数的等价。整型数一般是32位(应该是和程序所选的编译选项有关,32位程序,64位程序?)。

测试的结果是单引号内括的要是超过四个字节则报错。另一方面,在接收的变量类型上,如果接收的不够后面字符常量的字节,不同编译器处理方式不同,有的是忽略后面的,而vc这个则明显是后面的依次覆盖前面的。测试代码如下:

int a1 = '1';//1
int a2 = '1';//256
int a3 = '1';//65536
int a4 = '1';//16777216

int b1 = 'abcd';//1633837924:0x61626364
int b2 = '\\t';//7625820:0x745C5C

short c1 = 'ab';//24930:0x6162
short c2 = 'abc';//25187:0x6263,bc的ascii值
short c3 = 'abcd';//25187:0x6364,cd的ascii值
//short e1 = 'abcde';//error C2015: 常量中的字符太多//HACK 这个常量是给什么概念?

char cd1 = 'abcd';//'d'
putchar(b1);//'d'

double d1 = 'abcd';//1633837924.0000000
//double d2 = 'abcde';//error C2015: 常量中的字符太多

原文地址:https://www.cnblogs.com/xiarl/p/3419076.html