Primeiro, suponha que eu tenha
int16_t a;
int8_t b;
. Gostaria de fazer isso b=a;
descartando todos os MSBs, incluindo o bit de sinal, que a
não se encaixam em b
. Qual seria uma maneira correta de fazer isso?
Não consigo encontrar nenhuma informação útil e recente sobre este tópico. Este link diz que a conversão de estreitamento de sinal depende do compilador, mas isso acontece em C, não em C++. Também não quero comportamentos dependentes do compilador. Aqui diz que a conversão de estreitamento deveria ser um erro. Estou bastante confuso sobre o que fazer.
Segundo, se ambos a
e b
fossem suas contrapartes sem sinal, então seria b=a;
uma abordagem adequada? De acordo com o primeiro link, isso é definido pelo menos em C.