[PL] FAQ: C, for, syntax error (last update: 2012-12-13, created: 2012-12-12) back to the list ↑
|
|||
[FAQ - pytania (które dostaje via e-mail/IRC/jabber/etc, oraz na które natrafiam na forach) + moje odpowiedzi]
Kod, który otrzymałem od znajomego, z pytaniem typu "co tu jest nie tak?": for(unsigned short int spaces = cnt, unsigned short int j = 1; spaces > 0, j <= signs; spaces--, j++) Problemy są dwa: 1. W C/C++ nie podaje się dwóch typów przy inicjalizacji (a w zasadzie tworzeniu) nowych zmiennych w pętli for. A konkretniej, jeśli oba typy mają być takie same, to wystarczy podać typ na początku; a jeśli mają być różne, to (niestety) trzeba jedną ze zmiennych zadeklarować przed pętlą. Np.: float f = 0.0f; /* Inny typ, a więc przed pętlą. */ 2. Jeśli chodzi o warunek, to konstrukcja a > 0, b < 0 nie do końca zrobi to co autor prawdopodobnie chciał osiągnąć. W językach C i C++ można co prawda zapisywać wyrażenia po przecinku, ale końcową (zwracaną) wartością takiej serii wyrażeń będzie wartość zwrócona przez ostatni element. Przykładowo: int a = (1, 2, 3, 4); Zazwyczaj jeśli podaje się dwa warunki, to chce się, aby oba były spełnione - i wtedy używamy operatora && :) Ewentualnie, przynajmniej jeden ma być spełniony - wtedy w grę wchodzi oczywiście operator ||. Na koniec dodam jeszcze, że pomimo tego, że z całej serii wyrażeń oddzielonych przecinkami, zostanie zwrócona wartość jedynie ostatniego, to i tak każde wyrażenie w serii będzie ewaluowane (wykonane). Czyli w przypadku a(), b(), c(), każda z tych funkcji się wykona, dokładnie w kolejności w której są napisane (ponieważ operator comma jest punktem sekwencyjnym). | |||
|