नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
overflow; assigning value to bit-field that can only hold values from low_value to high_value
Remarks
The assigned value is outside the range of values that the bit-field can hold. Signed bit-field types use the high-order bit for the sign, so if n is the bit-field size, the range for signed bit-fields is -2n-1 to 2n-1-1, while unsigned bit-fields have a range from 0 to 2n-1.
Example
This example generates C4463 because it attempts to assign a value of 3 to a bit-field of type int with a size of 2, which has a range from -2 to 1.
To fix this issue, you can change the assigned value to something in the allowed range. If the bit-field is intended to hold unsigned values in the range from 0 to 3, you can change the declaration type to unsigned. If the field is intended to hold values in the range -4 to 3, then you can change the bit-field size to 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.
}