title: Decreasing value of minimum int results in maximum int
body: <p>I'm currently reading through C# 4.0 In A Nutshell, and in chapter 2 it states that if an int object has a value of <code>int.MinValue</code> (-2147483648) and the value is decreased, as the value cannot go any lower, it goes to the highest value, <code>int.MaxValue</code> (2147483647):</p>
  
  <pre><code>int a = int.MinValue;
  Console.WriteLine(a); //-2147483648
  a = a-1;
  Console.WriteLine(a); //-2147483648
  Console.WriteLine (a == int.MaxValue);  // True
  </code></pre>
  
  <p>The book then goes on to mention how you can protect from this happening using <code>checked</code>.</p>
  
  <p>However, I'm wondering why this is possible? Surely this could cause a lot of issues if its not protected with <code>checked</code>?</p>
  
  <p>Is it not a bit of a flaw in the design? Why would anyone want a minimum value to become a maximum value?</p>
  
  <hr>
  
  <p>Furthermore, I've noticed VB.NET will throw an 'Arithmetic overflow' instead of letting this happen:</p>
  
  <pre><code>Dim a As Integer
  a = Integer.MaxValue
  a = a + 1
  Response.Write(a) 'Arithmetic overflow exception here
  </code></pre>