使用 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',没有警告。