042 TIF

042 TIF



{


cout « "Pętla" « endl; nNowePróbki = 0;

Po

int nNowePróbki; int nRozmBuf;

nNowePróbki = -1; nRozmBuf =10;

cout « "Start" << endl;

while (nNowePróbki >= nRozmBuf)

{

cout « "Pętla" « endl; nNowePróbki = 0;

}

Liczby ze znakiem i bez znaku mająinne zakresy, ale można stosować między nimi konwersję. Oznacza to, że przez przypadek można porównać oba typy i uzyskać błędny wynik. Stanie się tak wówczas, gdy wartość liczby bez znaku jest na tyle duża, że podczas konwersji na liczbę ze znakiem będzie potraktowana jako liczba ujemna. W wyniku możemy otrzymać nieskończoną pętlę lub inne interesujące efekty uboczne.

Weźmy na przykład fragment „Przed”, w którym porównujemy wartość liczby bez znaku z liczbą ze znakiem. Zmiennej zostaje przypisana wartość -1, ale ponieważ zmienna ta ma typ bezznakowy, zostaje zamieniona na bardzo dużą liczbę. Porównanie jej z liczbą 10 powoduje spełnienie warunku pętli i wykonanie pętli.

Natomiast w poprawionym fragmencie „Po” obie liczby są ze znakiem i warunek pętli nie jest spełniony.

Podany przykład jest prosty i łatwo dostrzec, w którym miejscu tkwi problem. W rzeczywistych sytuacjach znalezienie błędu bywa znacznie trudniejsze. Ogólnie nie należy mieszać liczb bez znaku z liczbami ze znakiem. Gdy się na to decydujemy, wówczas powinniśmy zachować dużą ostrożność.

Nawiasy tam, gdzie są potrzebne

unikanie banalnych błędów

Przed

if(!(i+1 % 64)) cout« "\n";


Wyszukiwarka

Podobne podstrony:
101 TIF cout « ((poch *) b)->weźRozm() « endl; return 0;} Rzutowanie klasy pochodnej na klasę pod
WP 1412173 Pętla histerezy magnetycznej Po osłonięciu stanu nasycenia zmniejszamy wartość prądu w c
Scan0098 tif ło się, że wiewiórki po zjedzeniu tych szyszek zaczęły masowo zdychać. Importer zerwał
Rys.2. Układowa symulacja generatora z rozciętą pętlą sprzężenia zwrotnego. Po uruchomieniu układu i
277 tif 7.2. ZAGROŻENIE I OCHRONA PRZECIWPORAŻENIOWA uziemiających (po obydwu stronach odłącznika).
ALG34 334 Dodatek A cout « " y="« ret-_y() «endl; cout « " z-"<<2«endl;
098 TIF int main(int argc, char* argv[]){ KlasaNaucz t1; KlasaPrac s1; cout « tl.nldNaucz « endl; co

cout << "Zarobki: " << zarobki << endl; Po zdefiniowaniu klasy w program

043 TIF Po if(!((i+1) % 64)) cout« "

GRAFOMOTORYKA 6 LATKÓW (24) © Otocz pętlą tylko te obrazki, w nazwie których słyszysz głoskę „s”. ©

więcej podobnych podstron