041
32
Ostrożność przy wybieraniu typów ze znakiem lub bez znaku
unikanie nieoczekiwanych wyników
Przed
int nWart; nWart» 4;
Po
unsigned int nWart; nWart» 4;
Podczas działań na liczbach ze znakiem kompilator automatycznie dołącza kod korygujący znaki. Na przykład przesunięcie liczby 0x80000000 ze znakiem o jeden bit w prawo daje liczbę 0x00000000 zamiast oczekiwanej liczby 0x40000000. Dzieje się tak, ponieważ kompilator po rozpoznaniu liczby ze znakiem wykonuje instrukcję SAR a nie SHR. Innymi słowy traktuje liczbę 0x80000000 jako liczbę ujemną i dba o to, aby wynik przesunięcia też był liczbą ujemną.
Jeśli jednak przesuwamy o jeden bit w prawo liczbę bez znaku (na przykład typu unsigned int lub DWORD), to kompilator nie zachowa bitu znaku i otrzymamy spodziewaną wartość.
Przykład: plik bits.cpp
Ostrożność przy łączeniu liczb ze znakiem i liczb bez znaku
unikanie banalnych błędów
Przed
unsigned int nNowePróbki; int nRozmBuf;
nNowePróbki = -1; nRozmBuf = 10;
cout « "Start" « endl;
while (nNowePróbki >= nRozmBuf)
Wyszukiwarka
Podobne podstrony:
SPIS2 TIF Ostrożność przy wybieraniu typów ze znakiem lub bez znaku................ 41 Ostrożność prSPIS2 TIF Ostrożność przy wybieraniu typów ze znakiem lub bez znaku................ 41 Ostrożność prSPIS2 Ostrożność przy wybieraniu typów ze znakiem lub bez znaku................ 41 Ostrożność przy łSlajd22 (107) Cykl rozkazowy Procesor 8086 zawiera 8 - bitowe rozkazy tj. mnożenie i dzielenie binarDSC04656 (3) I Odchytkę fj, rozrzuca ze znakiem przeciwnym na odczyty na latach, Lub obliczone na poDSC00276 adhczyjnym folii polimerowych ze sobą lub z Ibliuml ■/. innych materiałów I .aminowa nie prDSC02138 90 lub fotograficzna. Mają one tę cechę, że gromadzą materiał bez wyróżnia-nia poszczególny93 § 1. Pojęcie funkcji przy czym pierwiastki bierzemy ze znakiem plus, ponieważ kąty a i /?, na podWe fragmencie „Przed” porównujemy liczbę całkowitą ze znakiem z liczbą całkowitą bez znaku. KompilatANSI C 0 2 TYPY, OPERATORY I WYRAŻENIA Kwalifikatory signed (ze znakiem liczby) i unsigned (bez znPICT6052 90 lub fotograficzna. Mają one tę cechę, że gromadzą materiał bez wy^. uia poszczególnych zwięcej podobnych podstron