【发布时间】:2010-10-16 12:07:23
【问题描述】:
我见过并使用过如下 C++ 代码:
int myFourcc = 'ABCD';
它可以在最新版本的 GCC 中使用,但不确定最近的版本。 这个功能在标准中吗? 它叫什么?
我在网上搜索它时遇到了麻烦...
编辑:
我也找到了这个信息,供未来的观察者参考:
编译器每次为一个字符赋值一个多字符字符常量,将前一个值左移每个目标字符的位数,然后在截断到宽度的新字符的位模式中进行或运算的目标人物。最终的位模式被赋予 int 类型,因此是有符号的,无论单个字符是否有符号(与 GCC 3.1 和更早的版本略有不同)。如果常量中的字符多于目标 int 中的字符数,编译器会发出警告,并忽略多余的前导字符。
例如,对于具有 8 位字符的目标,'ab' 将被解释为
(int) ((unsigned char) 'a' * 256 + (unsigned char) 'b')', and '\234a' as(int) ((unsigned char) '\234' * 256 + (unsigned char) 'a')'。
【问题讨论】:
-
我之前在 SO... 上看到过这个问题...太忙了,没时间查。