tommot napisał(a):
no tak ale jak wykryć przepełnienie ? ? jest to jakoś sygnalizowane w C ? jakiś rejestr zmienna ?
Ci którzy wcześniej programowali w Bascomie mają problem bo nie mogą się pozbyć nawyków z Bascoma
i niestety ci którzy wcześniej programowali w asemblerze też często mają taki sam problem - nie mogą się pozbyć nawyków z asm. Język C nie opiera się na żadnych rejestrach przepełnienia bo to byłaby bzdura ...
za każdym razem gdy zmienna osiąga maksymalną wartość w swoim typie zostaje zerowana. W asemblerze mogłeś mieć z tym do czynienia tylko dla wartości jedno-bajtowych tak? czy nie ?
natomiast w C możesz mieć typy 16- 32-bitowe ...
Dla ciebie zrobienie w asemblerze dodawania liczby 32-bitowej to już masakra - bo trzeba się narzeźbić kodu

a tutaj ? .... a tutaj
uint32_t zmienna;
zmienna++;
i to wszystko ... nikt się nie bawi w dodawanie na poziomie operacji asm
więc proponuję - zapomnieć na chwilę o asemblerze i próbować wczuć się w C ... zapewniam cię, że da radę - miliony ludzi dało radę - ja też

A pamiętam że sam kiedyś miałem z tym problemy - lecz dopiero odrzucenie ciągłego myślenia asemblerem - pomogło
------------------------ [ Dodano po: kilkunastu sekundach ]MirkoT napisał(a):
Do powyższego przykładu miałbym tylko 2 małe uwagi:
1. nie należy inicjalizować zmiennej wartością 0. To jest zmienna globalna i jako taka zostanie to zrobione automagicznie

2. przy wartości 255 jeszcze nie jest przepełniona lecz osiąga wartość maksymalną dla tego typu zmiennej. Raczej należałoby sprawdzać czy zmienna == 0 co się sprawdzi ponieważ jest inkrementowana przed warunkiem
Bardzo cenne uwagi
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]