Question #6
What is the arithmetic overflow and how is it handled in .NET?
Answer #6
It is a situation when the result of an arithmetic operation exceeds (is outside of) the range of a given numeric type. For example the maximum value for byte type in .NET is 255. So in the following example, an operation a+b will cause an overflow:
What is the arithmetic overflow and how is it handled in .NET?
Answer #6
It is a situation when the result of an arithmetic operation exceeds (is outside of) the range of a given numeric type. For example the maximum value for byte type in .NET is 255. So in the following example, an operation a+b will cause an overflow:
byte a = 255; byte b = 20; byte c = a + b;The final result depends on the used numeric types:
- For integer types either OverflowException will be thrown or the result will be trimmed/cropped (the default behaviour). It depends on the compiler configuration and usage of checked / unchecked keywords.
- For floating point types OverflowException will never be thrown. Instead the overflow will lead either to the positive or the negative infinity.
- For decimal type OverflowException will be always thrown.
var b = byte.MaxValue;
//The result will be zero because:
//b = 255 = 1111 1111 
//b++ = 256 = 1 0000 0000
//The result has 9 bits so the result will be trimmed to 8 bits what gives 0000 0000
b++; 
         
checked
{
 b = byte.MaxValue;
 //Exception will be thrown 
 b++; 
}
var f = float.MaxValue;
//The result will be float.PositiveInfinity
f *= 2;  
decimal d = decimal.MaxValue;
//Exception will be thrown
d++; 
 
 


 
 orcid.org/0000-0002-6838-2135
orcid.org/0000-0002-6838-2135
0 comments:
Post a Comment