首页 > 服务端开发 > narrowing conversion of 'XXX' from 'int' to 'char' inside{}
2019
05-17

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类型范围出现了缩减,导致了报错。

修改方案:
将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 };
根据不同情况进行使用。

最后编辑:
作者:搬运工
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。