GCC 4.9.1報告「警告:從'int'轉換爲'unsigned char'可能會改變它的值[-Wconversion]」,代碼如下爲什麼bit-wise將運算符「〜」轉換爲int? (從'int'轉換爲'unsigned char'可能會改變它的值)
#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>()
來防止警告,但我覺得其他的東西是錯的,警告不應該在那裏。