Gdzie widzisz problem, przecież jak dodajesz do zmiennej 16bit zmienną 32bit to w wyniku dostaniesz zmienną 32bit (tzw. promocja do int czy jakoś tak się to nazywa, czyli do większej zmiennej)
Czyli reasumując: jeśli dodasz np: 56+300 to liczba wyniesie 356.
Poniżej masz kod, który sprawdziłem w kompilatorze online.
Kod i wynik z terminala.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Cytuj:
Nie znalazłem przykładu .
I ewentualnie jak zrobić konwersje odwrotnie?

Co masz na myśli odwrotnie? Chcesz zapisać liczbę uint32_t do zmiennej uint16_t?
Jeśli tak, to możesz zrobić jawne rzutowanie do uint16_t ale jeśli wynik będzie większy niż zakres uint16_t, to kompilator nie będzie krzyczał ale otrzymasz nieprawidłowe dane.