Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ö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.
}