Overflow

Radek Bucki
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:8
0

Jest jakieś polecenie sprawdzające, czy np. iloczyn jakiś liczb będzie przekraczał zakres?

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
0

Masz słówko kluczowe checked[0] - w runtime rzuci wyjątek, w przypadku overflow.
[0] https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked


Radek Bucki
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:8
0

tak, tylko mi chodzi o coś, co by mi zwróciło true, albo false. Bo to wynik funkcji może być overflowem i wtedy chcę zwrócić 0 i wyświetlić komunikat o tym, że nastąpiło przepełnienie

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
0

A try , catch Próbowałeś?


Radek Bucki
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:8
0

nie, a jak to powinno wyglądać?

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
0

Radek Bucki
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:8
0

z tego co widzę to chyba nie mam jak tego zastosować w rozwiązaniu mojego problemu.
Może przedstawie go tak:
if( czy_overflow(liczba1 ** liczba2))
{
MessageBox.Show("overflow");
return 0;
}
else return liczba1 * liczba2;

edytowany 1x, ostatnio: Radek Bucki
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
1

Wstawiasz ten blok w funkcję i tyle:

Kopiuj
static bool is_add_int_overflow(int a, int b) {
  checked {
    try {
    int val = a + b;
    return false;
    }
    catch (OverflowException) {
        return true;
    }
  }
}

Zobacz pozostałe 3 komentarze
WeiXiao
Dałoby się trochę uprościć chyba do: int val = checked(a + b);
lion137
Zastanawiałem się trochę, ale w dokumentacji tak jest:)
WeiXiao
@lion137: z tym czy musi być checked? bez niego nie poleci wyjątek, a wartość będzie ujemna dla intmax +1, teraz sprawdziłem :P
lion137
Nie czy musi, tylko czy musi być na całość.
Silv
@lion137: Przejrzałem kilka wątków na Stack Overflow z C++ oraz C# o zagadnieniu zwracania w try...catch (było też o finally). Kilka razy wspomniano, że nie jest to najlepsza praktyka, ale nie odnotowałem możliwości wystąpienia specjalnych problemów, jedynie wzmianki o pogorszeniu się ogólnie rozumianej czytelności.
Radek Bucki
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:8
0

dzięki działa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.