narrowing conversion of 'XXX' from 'int' to 'char' inside{}

问题前提:

代码中有一段十六进制表示中文的,

例如:char a[] = { 0xE5, 0x85,  0xB6, 0xE5, 0xAE, 0x83, 0x00 };

使用g++ test.cpp 编译时没有问题,但如果使用g++ -std=c++0x test.cpp编译就会报标题的错。

问题原因大概是使用-std=c++0x后,char类型范围出现了缩减,导致了报错。

narrowing conversion of 'XXX' from 'int' to 'char' inside{}_第1张图片

修改方案:

将char中十六进制数据强制转成char,

char a[] = { (char)0xE5, (char)0x85, (char)0xB6, (char)0xE5, (char)0xAE, (char)0x83, (char)0x00 };

或者使用unsigned char a[] = { 0xE5, 0x85,  0xB6, 0xE5, 0xAE, 0x83, 0x00 };

根据不同情况进行使用。

你可能感兴趣的:(问题记录)