piątek, 4 października 2013

Unikanie błędów programując w C - #3 Operacje bitowe na liczbach ze znakiem


Nie należy używać operacji bitowych ( &, |, ~, ^, << i >> ) na liczbach ze znakiem.

    // Nie rób tego ...
    int8_t  signed_data = -4;
    signed_data >>= 1;  // niekoniecznie -2


Standard C nie definiuje formatu danych liczb ze znakiem (na przykład U2 - uzupełnień do dwóch) i efekt niektórych operacji bitowych zależy od zastosowanej przez autora kompilatora implementacji zapisu takich liczb.