Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
nl-NL: overlopen; waarde toewijzen aan bitveld dat alleen waarden van low_value tot high_value kan bevatten
Opmerkingen
De toegewezen waarde valt buiten het bereik van waarden die het bitveld kan bevatten. Ondertekende bitveldtypen gebruiken de hoge volgorde voor het teken, dus als n de grootte van het bitveld is, is het bereik voor ondertekende bitvelden -2n-1 tot 2n-1-1, terwijl niet-ondertekende bitvelden een bereik hebben tussen 0 en 2n-1.
Example
In dit voorbeeld wordt C4463 gegenereerd omdat wordt geprobeerd een waarde van 3 toe te wijzen aan een bitveld van het type int met een grootte van 2, dat een bereik heeft van -2 tot 1.
U kunt dit probleem oplossen door de toegewezen waarde te wijzigen in iets in het toegestane bereik. Als het bitveld niet-ondertekende waarden in het bereik van 0 tot 3 bevat, kunt u het declaratietype wijzigen in unsigned. Als het veld is bedoeld voor het opslaan van waarden in het bereik -4 3, kunt u de grootte van het bitveld wijzigen in 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.
}