'0'=0x30
'1'=0x31
'2'=0x32
'3'=0x33
'4'=0x34
'z'=0x7A
'+'=0x2B
在VC6.0下测试,结果很有意思
int m='01';//m=0x3031
int m='012';//m=0x303132
int m='0+1';//m=0x302B31
int m='z+4';//m=0x7A2B34
但是如果定义int m='12345',就会报错“error C2015: too many characters in constant”。
从以上可以看出,形如int m=‘ABCD';这样的格式(注意是单引号,不是双引号,双引号就是字符串了),VC6.0的编译器会把单引号括起来的部分当常量来处理的,其值m='A'<<24+'B'<<16+'C'<<8+'D';
'z+4'是字符串
'z'+4是两者的ascii码相加
z是122
z+4 = 126
char a = 'z+4'不是字符串,编译器把它看作是一个整型,a的ascII码是52
char a = ‘b+4’ascII码也是52,char a = ‘b+5’ascII是53。
‘z’+4 代表 ~ (~的aciss是126, z的是122)
‘z+4’ 代表 4 (依次覆盖前面一个字符 所以就是最后一个字符,这个可以算是C里面的一个常识。。。对C了解深入一点点的人应该都知道的。。。)