Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Do zmiany zawartości zmiennej używa się instrukcji przypisania o postaci:
Ciekawostką języka C++ jest to, że sama instrukcja przypisania również posiada wartość wyrażenia. Uruchom poniższy program.
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a; cout << 3 * (a = 5) << endl << a << endl; return 0; } |
Co otrzymałeś w wyniku? Jaką wartość przyjęła zmienna a?
Własność ta jest bardzo użyteczna, gdy wartość wyrażenia należy umieścić w kilku zmiennych:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a,b,c; a = b = c = 1235; cout << "a = " << a << endl << "b = " << b << endl << "c = " << c << endl; return 0; } |
Operacja przypisania może stanowić część innego wyrażenia. Jednakże z własności tej korzystajmy z umiarem, inaczej można łatwo stworzyć trudne w interpretacji programy.
Z modyfikacją zmiennej mamy do czynienia wtedy, gdy w wyrażeniu przypisywanym zmiennej występuje ta zmienna. W takim przypadku wartość wyrażenia zależy od poprzedniej zawartości zmiennej. Oto przykład:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 1; a = a + a; cout << a << endl; a = a + a; cout << a << endl; a = a + a; cout << a << endl; a = a + a; cout << a << endl; a = a + a; cout << a << endl; a = a + a; cout << a << endl; a = a + a; cout << a << endl; return 0; } |
Jeśli zmienisz wartość początkową zmiennej a, to otrzymasz inny ciąg liczb. Oto inny przykład:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int i = 0; int s = 1; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; s = s * (i = i + 1); cout << s << endl; return 0; } |
Niektóre operacje modyfikacji zmiennej są szczególnie często wykonywane w programach. Dlatego otrzymały one w języku C++ specjalne konstrukcje.
Zwiększanie zmiennej o 1 wykonuje operator ++. Można go umieścić zarówno przed jak i za zmienną:
zmienna++; ++zmienna;
Podobną funkcję pełni operator --, który zmniejsza zawartość zmiennej o 1:
zmienna--; --zmienna;
Jeśli powyższe wyrażenia są stosowane samodzielnie, to nie ma znaczenia sposób użycia operatorów ++ lub --:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a,b; a = b = 10; a++; ++b; cout << a << endl << b << endl << endl; a--; --b; cout << a << endl << b << endl; return 0; } |
Różnice zaczną pojawiać się wtedy, gdy operację zwiększania ++ lub zmniejszania -- zastosujemy w wyrażeniu wraz z innymi operatorami. Wtedy obowiązuje następująca reguła:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a,b,c,d; a = b = 10; c = 5 * a++; d = 5 * ++b; cout << c << endl << d << endl; return 0; } |
Operatory ++ i -- mają wyższy priorytet od pozostałych operatorów arytmetycznych.
Oprócz zwiększania i zmniejszania o 1 język C++ udostępnia również inne operatory modyfikacji. Posiadają one wspólną postać:
Taka konstrukcja jest równoważna konstrukcji:
Przykłady:
a += 5; // Do zmiennej a zostanie dodana liczba 5 a -= c+d; // Od zmiennej a zostanie odjęta suma c+d a *= a; // W zmiennej a otrzymamy kwadrat poprzedniej zawartości
Operacje te, podobnie jak operacja przypisania, posiadają wartość w języku C++ i można je stosować w innych wyrażeniach:
Code::Blocks |
// Wyrażenia // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { long long sp = 1, i = 0; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; sp *= i += 2; cout << "dla " << i << " mamy " << sp << endl; return 0; } |
Podsumujmy:
Operator | Opis |
= |
Przypisanie. Ma wartość wyrażenia po prawej stronie. |
++ |
Modyfikacja: zwiększenie zmiennej o 1. |
-- |
Modyfikacja: zmniejszenie zmiennej o 1. |
+= |
Modyfikacja: do zmiennej dodajemy wartość wyrażenia po prawej stronie. |
-= |
Modyfikacja: od zmiennej odejmujemy wartość wyrażenia po prawej stronie. |
*= |
Modyfikacja: zmienną mnożymy przez wartość wyrażenia po prawej stronie. |
/= |
Modyfikacja: zmienną dzielimy przez wartość wyrażenia po prawej stronie. |
%= |
Modyfikacja: do zmiennej trafia reszta z dzielenia jej przez wartość wyrażenia po prawej stronie. |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe