Brak wyjątku o przekroczeniu zakresu long w programie obliczającym silnię

0

Witam, piszę program obliczający silnie i mam problem ponieważ po przekroczeniu wartości zmiennej long nie pokazuje wiadomości o wyjątku a na wyjściu jest liczba 0 przy silni 500! proszę o pomoc.

kod programu:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Csharp_Zad1_Silnia
{
    class Program
    {
        static void Silnia(long argument)
        {
            try
            {
                for (long x = argument - 1; x >= 1; x--)
                    argument = argument * x;  
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }
                Console.WriteLine("Wynik to :" + argument);
        }
        static void Main(string[] args)
        {
            Silnia(500);
            Console.ReadKey();
        }
    }
}

na wyjściu:

Wynik to : 0
1

Przekroczenie zakresu zmiennej nie wyrzuca wyjątku.

Ale możesz to zmienić umieszczając operacje w bloku checked, wtedy przekroczenie zakresu wyrzuci OverflowException.

A tak btw. to w zmiennej typu long nie wiem czy zmieścisz nawet 25!.

1 użytkowników online, w tym zalogowanych: 0, gości: 1