Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
túlcsordulás; olyan érték hozzárendelése bitmezőhöz, amely csak a low_value és high_value közötti értékeket tudja tárolni
Megjegyzések
A hozzárendelt érték azon értékek tartományán kívül esik, amelyeket a bitmező tárolhat. Az aláírt bitmezőtípusok a nagy értékű bitet használják az előjelhez, így ha n a bitmező mérete, az aláírt bitmezők tartománya -2n-1 és 2n-1-1, míg az aláíratlan bitmezők tartománya 0 és 2n-1 között van.
Example
Ez a példa azért hozza létre a C4463-at, mert egy 3 értékű értéket próbál hozzárendelni egy 2-es méretű bitmezőhöz int , amelynek tartománya -2 és 1 között van.
A probléma megoldásához módosíthatja a hozzárendelt értéket az engedélyezett tartományban lévő értékre. Ha a bitmező a 0 és 3 közötti tartományba eső nem előjeles értékeket szeretné tárolni, a deklaráció típusát unsigned módosíthatja. Ha a mező célja az értékek tárolása -4 és 3 között, akkor a bitmező méretét 3-ra módosíthatja.
// 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.
}