030

030



int iŚrodek; long IM;

if(m_clMtabl == 0) return 0;

while(iLewy < iPrawy)

{

iŚrodek = (iLewy + iPrawy)/2;

Łatwo zapomnieć o zainicjalizowaniu zmiennych lokalnych. Czynność ta wydaje 1 się po prostu mało ważna. Ponadto w wielu wypadkach dobrze wiemy, że wartości tak | czy inaczej zostaną obliczone. Na przykład we fragmencie „Przed” wartość zmiennej j iŚrodek jest zawsze obliczana przed użyciem, ale zmienne iLewy oraz iPrawy —już j nie. Zatem niezainicjalizowanie ich wartości może wywołać różne dziwne efekty, i W tym wypadku może nastąpić nieoczekiwane przerwanie pętli.

Należy przyzwyczaić się do inicjalizowania wszystkich zmiennych lokalnych przed ich użyciem. (Kompilator często ostrzega o braku wartości początkowych. Na przykład kompilator Microsoft Visual C++ na ogół wykrywa użycie niezainicjalizowanych ; wskaźników.)

Przykład: plik bsrch.cpp

Sprawdzanie argumentów

unikanie awarii; unikanie nieoczekiwanych wyników

Przed

BOOL FL::Weź(int ibit)

{

Po

BOOL FL::Weź(int ibit)

{

if(ibit >= m_cbit || ibit < 0) return(FALSE);

Użytkownicy nie czytają dokumentacji. Nie można więc oczekiwać, że wartości przekazywane przez nich do funkcji, a w szczególności do funkcji publicznych, będą się mieściły w odpowiednim zakresie.

Należy sprawdzać wartości argumentów i dane wprowadzane przez użytkownika jeszcze przed ich przetworzeniem. Jeśli jakaś wartość wykracza poza dopuszczalny


Wyszukiwarka

Podobne podstrony:
{wyszukaj (inf 1. im p) if(A(j-lJ>A[j]) //1, p - to końce przedziału posortowania {x-A(jl; { in
++m_clMac; return m_clMac -1; void SArray::QuickSort(int iLeft, int iRight){ long IKey; int i; 
Effect Of Dividends On Slock Prices 8 equity ratio has negative relation with stock return while siz
Historia KIS 1988: inicjatywa powołania informatyki, IM+IF+OOO, powołanie Zakładu Informatyki Stosow
21unx16 PreambleWe, the people >>f d« United Kitiirs, tli ortlr.r v> form o morę ptrfect On
Downsampled panorama Im U l W /
Zdjcie0970 j 2 I kur mi t a in> m v / % tu i«L»om >*•! I J4iM.p> ikJ«« Im «if«tJ )f»l mlnht
140 TIF char *m_pch; public: int operator==(const Napis& napis) const{ return(strcmp(m_pch, napi
zadania15 • Zdefiniowano my nnst(f>ujiicc funkcje int £ (int l) < rotum +ti;J xnt g <ir>
DSC00773 Grammar test - eonditional scntcnces H We w ouId have repaircd the damage long ago if we (
dsrc!3?20 ofx W fT- im^m . if (A W ą

więcej podobnych podstron