User Tools

Site Tools


dydaktyka:cprog:common_mistakes

This is an old revision of the document!


Częste błędy

…czyli na co zwracać szczególną uwagę podczas pisania programu.

Przypisanie czy porównanie?

W języku C operator = oznacza przypisanie, natomiast operator == – porównanie dwóch wartości (zobacz: operatory relacyjne):

int a = 5;        // przypisanie do zmiennej `a` wartosci 5
 
if (a == 7) {     // porownanie wartosci zmiennej `a` z wartoscia 7
    ...
}   

:!: Operator przypisania przypisuje temu, co stoi po lewej stronie (zazwyczaj zmiennej), wartość stojącą po prawej stronie.

int a;
2 = a;  // blad!
a = 2;  // OK

Typ danych w wywołaniu funkcji

Typ zmiennych podajemy tylko w deklaracji funkcji – nie w wywołaniu:

void func(int a) {  // OK
    ...
}
 
int main ()
{
    int k = 3;
 
    func(int k); // blad!
    func(k);     // OK
 
    ...
}

if-else - co to?!

Zamiast powtarzać ten sam warunek logiczny, tylko w formie zaprzeczenia, możesz skorzystać z konstrukcji if-else (jeżeli – w przeciwnym razie).

// Dziala, ale trzeba duzo pisac i malo to czytelne...    
if (a*a + b*b == c*c) {
    return 1;
}
if (a*a + b*b != c*c) {
    return 0;
}
// Lepiej!
if (a*a + b*b == c*c) {
    return 1;
} else {
    return 0;
}

Funkcja main() bez "return"

(Minimalny) nagłówek funkcji main() wygląda następująco:

int main(void)

Ten int oznacza, że funkcja main() zwraca wartość całkowitą (do systemu operacyjnego), a zatem powinna się ona kończyć instrukcją return (w naszym przypadku return 0;, bo 0 oznacza poprawne zakończenie programu):

int main(void) {
    return 0;
}
dydaktyka/cprog/common_mistakes.1447004182.txt.gz · Last modified: 2020/03/25 11:46 (external edit)