To makro w kodzie źródłowym lwIP:Jak działa odejmowanie bez podpisu, gdy się zawija?
#define TCP_SEQ_LT(a,b) ((int32_t)((uint32_t)(a) - (uint32_t)(b)) < 0)
który służy do sprawdzenia, czy numer sekwencyjny TCP jest mniejsza niż inny, biorąc pod uwagę, gdy numery sekwencyjne owinąć wokół. Wykorzystuje fakt, że arytmetyka obejmuje, ale nie jestem w stanie zrozumieć, jak to działa w tym konkretnym przypadku.
Czy ktoś może wyjaśnić, co się dzieje i dlaczego powyższe działa?
Wypracować za pomocą np. 8-bitowego numeru. –
Chcę utworzyć kompilator, który konwertuje liczby spoza zakresu do 17, gdy typ docelowy jest podpisany. –
@ Daniel Fischer Tak długo jak to dokumentujesz. –