foreste pisze:dokładnie nie rozumie tego zapisu: led1 = (ain > 0.2f) ? 1 : 0;
Najpierw przetłumaczę ten zapis na ludzki język:
Jeśli ain jest większe od 0.2f, to przypisz obiektowi led1 wartość 1, w przeciwnym przypadku przypisz obiektowi led1 wartość 0 (zero).
Inną formą, identycznie działającą, jest tradycyjny "if else":
Jak widzisz wersja tradycyjna zajmuje sporo miejsca, ale jest maksymalnie czytelna, zaś wersja "z pytajnikiem" jest zwarta i zgrabna, ale niekoniecznie czytelna. Ok, wróćmy do zapisu, o który pytasz:
led1 = w tym miejscu zostanie sprawdzone to, co jest w nawiasie. W tym konkretnym przypadku zostanie sprawdzone, czy obiekt ain jest o wartości wyższej niż 0.2f.
led1 = (ain > 0.2f)? wskazuje nam (i kompilatorowi), że program ma tutaj dokonać wyboru. Jeśli zawartość tego, co jest wewnątrz nawiasów jest TRUE, obiektowi led1 zostanie przypisana wartość znajdująca się po lewej stronie dwukropka. Jeśli zaś wewnątrz nawiasu jest FALSE, do led1 zostanie przypisana wartość znajdująca się po prawej stronie dwukropka.
Przykład:
Wewnątrz nawiasu mamy sprawdzenie, czy ain jest większe od 0.2f. Nie jest, więc wynik mamy FALSE. Do led1 przypisane zostanie zero.
Znowu sprawdzamy, czy ain jest większe od 0.2f. Tym razem jest większe, czyli to wyrażenie jest TRUE. Do led1 zostanie przypisana jedynka.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.