Be aware of int.MaxValue C#

Be aware of int.MaxValue C#

@csharp_1001_notes
using System;
namespace IntMaxValueQuiz
{
  class Program
  {
    static void Main(string[] args)
    {
      int i = 0;

      for (; i <= int.MaxValue; i++)
      {

      }

      Console.WriteLine(i);
    }
  }
}

Результат выполнения программы?

Ответ через 5

4

3

2

1

.

.

.

.

.

.

It depends :)

Что нужно понимать

  1. int.MaxValue + 1 = 2147483647 + 1 = -2147483648 (подробнее: дополнительный код)
  2. По умолчанию сборка проекта осуществляется без проверки на переполнение (однако, она может быть включена в Project > Properties > Build > Advanced > Check for arithmetic overflow / underflow)

Таким образом, если проверка на переполнение выключена, то мы получим бесконечный цикл. В противном случае- исключение.

Ещё по теме.



Report Page