Be aware of int.MaxValue C#
@csharp_1001_notesusing 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 :)
Что нужно понимать
- int.MaxValue + 1 = 2147483647 + 1 = -2147483648 (подробнее: дополнительный код)
- По умолчанию сборка проекта осуществляется без проверки на переполнение (однако, она может быть включена в Project > Properties > Build > Advanced > Check for arithmetic overflow / underflow)
Таким образом, если проверка на переполнение выключена, то мы получим бесконечный цикл. В противном случае- исключение.