看《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: 常量中的字符太多