• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Badanie czy liczba ktora podajemy nie przekracza zakresu zmiennej

Object Storage Arubacloud
0 głosów
290 wizyt
pytanie zadane 26 listopada 2016 w C i C++ przez Wi_ktos Bywalec (2,950 p.)
Witam,

czy zna ktos moze rozwiazanie na nastepujacy problem. Otoz dajmy na to ze chce aby moja funkcja sprawdzala czy podana liczba nalezy do zakresu typu int czy nie.

Z gory dziekuje.

1 odpowiedź

0 głosów
odpowiedź 27 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Oblicz maksymalną pojemność konkretnego typu i zrób prosty warunek if (twoja_liczba > max_int) cout<<"Za dużo"!;
komentarz 27 listopada 2016 przez Wi_ktos Bywalec (2,950 p.)
Hmm na to wpadlem tylko ze problem jest troche bardziej rozbudowany. Poniewaz ja ta liczbe potem musze przypisac do zmiennej ktora rzeczywiscie ma typ ktorego zakres sprawdzamy. Moze dojsc do utraty danych na skutek takiego przypisania jesli dajmy na to wywolam funkcje z argumentem long long potem sprawdze zakres a potem przypisze do inta no mozna utracic troche a tego bym nie chcial.
komentarz 27 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Zrób sobie funkcję statyczną z argumentem zawierającymi to co nie może się zmienić i jeżeli coś będzie mogło się zmieć to dostaniesz ostrzeżenie lub program się nie skompiluje.
komentarz 27 listopada 2016 przez Wi_ktos Bywalec (2,950 p.)
A jak w takiej funkcji wygenerowac wyjatek gry cos sie jednak zmieni :/?
komentarz 27 listopada 2016 przez Wi_ktos Bywalec (2,950 p.)
Poza tym problem jest taki ze to uzytkownik podaje ta liczbe i jak niby ta funkcja moze sprawdzic czy zostal ten int zmieniony czy nie
komentarz 27 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)

Może coś w stylu: 

if (twoja_liczba < max_int)

{

}

else if (twoja_liczba < max_long_long_int)

{

}

 

Pokombinuj coś z właśnie tym. Kolejne else if'y to coraz większe typy danych. 

komentarz 27 listopada 2016 przez niezalogowany

@Konrad, to co proponujesz jest bez sensu, jeżeli podasz za dużą liczbę to nastąpi overflow i licznik się "przekręci", dla przykładu:

int main(void)
{
  unsigned char mychar; // range = [0,255]
  mychar = 255; // mychar=255
  mychar += 10; // mychar = 9
  return mychar;
}

 

Podobne pytania

0 głosów
1 odpowiedź 2,013 wizyt
0 głosów
2 odpowiedzi 5,804 wizyt
pytanie zadane 29 grudnia 2016 w JavaScript przez Fiduciam Nowicjusz (200 p.)
0 głosów
5 odpowiedzi 503 wizyt
pytanie zadane 17 kwietnia 2016 w C i C++ przez Azholi Początkujący (260 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...