这种表达竟然是合法的,是 ISO 9899:2011 C 的标准语法。但因为可移植性的原因,并不被推荐使用。

StackOverFlow的这篇回答说明了 multi-character character 字符常量的意义。

比如:

 short c = 'bc';
 short c = '\x62\x63';

在内存里依次为 0x63 0x62; 按照小端顺序从右到左的在内存中存储。

如果是:

char c = 'abcdefg';

内存中 abcdefg 程序不会写到内存中,编译器只会将 'g' 赋值给c。

利用这种方式可以写一个很精简的大小端测试程序。

char c= 'x01x02';
bool big_endian = ( (c=='x01')?(1):(0) );

标签: none

添加新评论