使用 C++11 编译以下代码片段(此处为演示):
#include <stdint.h>
int main() {
const uint8_t foo[] = {
'\xf2'
};
}
将触发警告(至少在 GCC 4.7 上),表明转换'\xf2'
为uint8_t
.
为什么是这样?sizeof(char)
is always 1
,应该与 相同sizeof(uint8_t)
,不是吗?
请注意,当使用其他字符文字时,例如'\x02'
,没有警告。