озадачен предупреждением компилятора, которое предлагает составное присваивание int8_t повышает до int

Обычно я могу понять причину предупреждения компилятора, но это кажется совершенно неправильным.

#include <stdint.h>    
uint8_t myfunc(uint8_t x,uint8_t y)
{
    x |= y;
    return x;
}

Компилятор Intel с -Wall жалуется:

conversion from "int" to "uint8_t={unsigned char}" may lose significant bits
  x |= y;
    ^

Это правильно? Является ли приведенный выше код непереносимым и нестандартным?

12
задан osgx 27 August 2011 в 21:38
поделиться