Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
överflöd; tilldela värde till bitfält som endast kan innehålla värden från low_value till high_value
Anmärkningar
Det tilldelade värdet ligger utanför det värdeintervall som bitfältet kan innehålla. Signerade bitfältstyper använder högordningsbiten för tecknet, så om n är bitfältsstorleken är intervallet för signerade bitfält -2n-1 till 2n-1-1, medan osignerade bitfält har ett intervall från 0 till 2n-1.
Example
Det här exemplet genererar C4463 eftersom det försöker tilldela ett värde på 3 till ett bitfält av typen int med storleken 2, som har ett intervall från -2 till 1.
Du kan åtgärda problemet genom att ändra det tilldelade värdet till något i det tillåtna intervallet. Om bitfältet är avsett att innehålla osignerade värden i intervallet från 0 till 3 kan du ändra deklarationstypen till unsigned. Om fältet är avsett att innehålla värden i intervallet -4 till 3 kan du ändra bitfältsstorleken till 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.
}