如何修复此警告:从'int'转换为'unsigned char'可能会改变其值

Kun*_*mar 1 c++ compiler-construction

我在编译库时收到此警告.

警告:从'int'转换为'unsigned char'可能会改变其值

这阻止我们使用编译器选项-Werror.

任何人都可以建议修复此警告的方法???

Bo *_*son 8

编译器警告您int可以包含不适合的值unsigned char.

如果您完全确定在这种情况下它始终适合,您可以使用a来告诉编译器static_cast

c = static_cast<unsigned char>(i);
Run Code Online (Sandbox Code Playgroud)

编译器会信任你(如果不是这样,那就是你的错).


Mat*_* M. 5

在黑暗中拍摄:

使用a static_cast指示编译器您知道转换不会导致截断:int i; unsigned char c = static_cast<unsigned char>(i);

如果您不确定,请查看boost::numeric_cast.

它相当于static_cast在这种情况下,但更明确(更容易grep /搜索数字转换).此外,它还执行绑定检查.