나는 보통 컴파일러 경고 뒤에있는 이유를 이해할 수 있지만, 이것은 보통 명백한 것처럼 보인다.컴파일러 경고에 의아해 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 로의 변환이지만, 실망스럽게도 중대한 비트를 잃어 버릴지도 모른다는 주장에서 위태로 우며 잘못되었습니다. –