Overflow
- 데이터 형식의 크기를 넘어선 값을 담으면 발생하는 현상
using static Console; public static class IntegralTypes { private static void Main() { OverFlow(); } private static void OverFlow() { byte a = byte.MaxValue; WriteLine($"MaxValue : {a}"); a = (byte)(a + 1); WriteLine($"Overflow : {a}"); } }
- 255 는 2진수로 변환 시
1111 1111
- 1을 더하면
1 0000 0000
이 됨 - byte는 8bit 만 담을 수 있어, 넘쳐흐른(Overflow) 왼쪽의
1
은 버리고, 오른쪽0000 0000
만 저장 -
0000 0000
은0
이므로 Console에0
이 나오게 됨 - 그 반대의
UnderFlow
도 발생할 수 있음UnderFlow
using static Console; public static class IntegralTypes { private static void Main() { UnderFlow(); } private static void UnderFlow() { byte a = byte.MinValue; WriteLine($"MinValue : {a}"); a = (byte)(a - 1); WriteLine($"UnderFlow : {a}"); } }