Kun*_*mar 1 c++ compiler-construction
我在编译库时收到此警告.
警告:从'int'转换为'unsigned char'可能会改变其值
这阻止我们使用编译器选项-Werror.
任何人都可以建议修复此警告的方法???
编译器警告您int可以包含不适合的值unsigned char.
如果您完全确定在这种情况下它始终适合,您可以使用a来告诉编译器static_cast
c = static_cast<unsigned char>(i);
Run Code Online (Sandbox Code Playgroud)
编译器会信任你(如果不是这样,那就是你的错).
在黑暗中拍摄:
使用a static_cast指示编译器您知道转换不会导致截断:int i; unsigned char c = static_cast<unsigned char>(i);
如果您不确定,请查看boost::numeric_cast.
它相当于static_cast在这种情况下,但更明确(更容易grep /搜索数字转换).此外,它还执行绑定检查.