pozostałe operatory przypisania
Ostatnio zmodyfikowano 2014-05-26 11:00
antonio12 Temat założony przez niniejszego użytkownika |
pozostałe operatory przypisania » 2014-05-25 11:15:15 W Symfonii natknąłem się na takie pozostałe operatory przypisania:
i += 2 oznacza i = i + 2 i -= 2 oznacza i = i -2
I jest taka analogia:
"Jeśli i jest wyrażeniem, to w naszym nowym zapisie jest ono obliczane tylko jednokrotnie (w starym - dwa razy). Może to mieć znaczenie, jeśli wyrażenie to ma jakieś działanie uboczne (np. inkrementacja).
nowy zapis to ---> i += 2 stary zapis to ---> i = i + 2
Mógłby ktoś wyjaśnić to analogię na jakimś przykładzie ? |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-05-25 19:48:17 nikt nie wie o co chodzi ? |
|
Moorfox |
» 2014-05-25 19:52:20 Z jakiego roku ta Symfonia C++, bo zdaje mi się, że to nie prawda, z ciekawości zajrzałem do kodu maszynowego wygląda tak samo. Więc albo po pro stu nie wiem o co autorowi symfonii chodziło, albo masz starą wersje i uległo to zmianie, albo wyrwałeś to z kontekstu |
|
michal11 |
» 2014-05-25 20:34:12 Chodzi o ilość wywoływanych funkcji. Każdy operator to tak na prawdę funkcja. Przy zapisie i += 2 jest wywoływana tylko 1 funkcja operator += . Z kolei przy zapisie i = i + 2 są wywoływane 2 funkcje operator + i operator = . |
|
Monika90 |
» 2014-05-25 21:15:58 "Jeśli i jest wyrażeniem, to w naszym nowym zapisie jest ono obliczane tylko jednokrotnie (w starym - dwa razy). Może to mieć znaczenie, jeśli wyrażenie to ma jakieś działanie uboczne (np. inkrementacja). |
pzypuśćmy że za i podstawiamy takie wyrażenie: tablica[f()], wtedy zamiast i = i + 1; będzie tablica[f()] = tablica[f()] + 1;a zmiast i += 1; będzie tablica[f()] += 1;w pierwszym przypadki funkcja f będzie wywołana dwa razy, a w drugim tylko raz. Więc jeżeli funkcja f ma taką definicję int f() { std::cout << "jestem f\n"; return 5; }
to w pierwszym przypadku na ekranie bedzie dwa razy wyśwetlony tekst "jestem f", a w drugim przypadku tylko raz. Wyrażenie tablica[f()] ma efekty uboczne, bo zawiera wywołanie funkcji, która ma efekty uboczne, w tym przypadku zapisuje coś do std::cout. |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-05-26 09:28:39 ok dzięki a przydaje się to w pisaniu programów czy raczej nie ? |
|
DejaVu |
» 2014-05-26 11:00:30 ok dzięki a przydaje się to w pisaniu programów czy raczej nie ?
|
Szukasz pretekstu, aby wiedzieć mniej...? :) Każde narzędzie się przydaje w większym lub mniejszym stopniu. |
|
« 1 » |