我通常可以理解編譯器警告背後的原因,但這個看起來只是錯誤的。由編譯器警告困惑,建議int8_t的複合賦值提升爲int
#include <stdint.h>
uint8_t myfunc(uint8_t x,uint8_t y)
{
x |= y;
return x;
}
英特爾編譯器與-Wall抱怨:
conversion from "int" to "uint8_t={unsigned char}" may lose significant bits
x |= y;
^
這是正確的?上述代碼是不可移植的還是非標準的?
總結在接受答案的評論:編譯器在技術上是正確的,有是int到uint8_t的轉換,但聲稱可能會丟失重要位,這是令人失望的錯誤。 – 2011-05-06 12:21:42