BasicKnowledgeCSharp/LessonsAndTasks/Lesson 51 - Арифметическое переполнение, checked unchecked/Program.cs

56 lines
1.8 KiB
C#
Raw Normal View History

2025-05-12 02:48:54 +03:00
/*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 02:47:11
* Version: 1.0.3
*/
using System;
2024-10-05 09:59:53 +03:00
/*
* "Ядерный Ганди" и аримфметическое переполнение
*/
class Program
{
static void Main()
{
#region Для целочисленных типов данных
byte agression = 1;
byte democracyModifier = 2;
try
{
// Если вычесть из 1 2, то будет 255 а не 0, это арифметическое переполнение
// и слово checked это проверяет - uncehcked {} выключает проверку переполнения
agression = checked((byte)(agression - democracyModifier)); // Служащее преобразование данных
Console.WriteLine(agression);
}
catch (OverflowException)
{
Console.WriteLine("Error");
}
#endregion
#region Для дробных типов данных
double a = 1.0 / 0.0;
Console.WriteLine(double.IsInfinity(a)); // output: True
double b = 0.0 / 0.0;
Console.WriteLine(double.IsNaN(b)); // output: True
double c = double.MaxValue + double.MinValue;
Console.WriteLine(double.IsInfinity(c)); // output: True
decimal aa = decimal.MaxValue;
decimal bb = decimal.MaxValue;
// *Для арифметических операндов типа decimal переполнение всегда показывает исключение
// decimal cc = unchecked(a + b);
#endregion
Console.ReadKey();
}
}