Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
transbordamento; atribuindo valor ao campo de bits que só pode conter valores de low_value a high_value
Observações
O valor atribuído está fora do intervalo de valores que o campo de bits pode conter. Os tipos de campo de bits assinados usam o bit de alta ordem para o sinal, portanto, se n for o tamanho do campo de bits, o intervalo para campos de bits assinados é -2n-1 a 2n-1-1, enquanto os campos de bits não assinados têm um intervalo de 0 a 2n-1.
Example
Este exemplo gera C4463 porque tenta atribuir um valor de 3 a um campo de bits do tipo int com um tamanho de 2, que tem um intervalo de -2 a 1.
Para corrigir esse problema, você pode alterar o valor atribuído para algo no intervalo permitido. Se o campo de bits se destinar a manter valores não assinados no intervalo de 0 a 3, você poderá alterar o tipo de declaração para unsigned. Se o campo se destinar a manter valores no intervalo -4 a 3, então você pode alterar o tamanho do campo de bits para 3.
// C4463_overflow.cpp
// compile with: cl /W4 /EHsc C4463_overflow.cpp
struct S {
int x : 2; // int type treats high-order bit as sign
};
int main() {
S s;
s.x = 3; // warning C4463: overflow; assigning 3
// to bit-field that can only hold values from -2 to 1
// To fix, change assigned value to fit in range,
// increase size of bitfield, and/or change base type
// to unsigned.
}