【发布时间】:2015-11-23 03:54:13
【问题描述】:
GCC 4.9.1 报告“警告:从‘int’转换为‘unsigned char’可能会改变其值 [-Wconversion]”,代码如下
#include <cstdlib>
int main( int , char*[] ) {
unsigned char *dest = new unsigned char[16];
const unsigned char *src = new unsigned char[16];
for( size_t i = 0; i != 16; ++i) {
dest[i] = ~(src[i]);
}
return 0;
}
显然,src 和dest 都是指向unsigned char 数组的指针,我只希望后者是前者的按位否定。出于某种奇怪的原因,~ 运算符似乎返回了int,从而触发了警告。为什么?这是预期的行为吗?
当然,我知道我可以使用static_cast<unsigned char>() 来阻止警告,但我觉得还有其他问题,并且警告不应该放在首位。
【问题讨论】:
标签: c++ type-conversion bit-manipulation compiler-warnings