![]() |
Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2010 mgr
Jerzy Wałaszek
|
Do przetwarzania danych w programie służy instrukcja przypisania (ang. assignement statement). W języku C++ posiada ona następującą postać:
zmienna = wyrażenie;
Komputer oblicza wartość wyrażenia i wynik umieszcza w podanej zmiennej. Znaku = nie traktuj jako równość matematyczną, jest to symbol operacji przypisania.
// Program przeliczający stopnie
// Celsjusza na stopnie Fahrenheita.
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int tc,tf;
cout << "Przeliczanie stopni Celsjusza na stopnie Fahrenheita\n"
"----------------------------------------------------\n\n"
"Temperatura w stopniach Celsjusza? : ";
cin >> tc;
tf = (9 * tc) / 5 + 32;
cout << "Temperatura w stopniach Fahrenheita : " << tf << endl << endl;
return 0;
}
|
// Program obliczający drogę w ruchu jednostajnie
// przyspieszonym.
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int s,V0,t,a;
cout << "Droga w ruchu jednostajnie przyspieszonym\n"
"-----------------------------------------\n\n"
"Vo = "; cin >> V0;
cout << "t = "; cin >> t;
cout << "a = "; cin >> a;
s = t * (V0 + a * t / 2);
cout << "\n----------\n"
"s = " << s << end;;
return 0;
}
|
Język C++ posiada dwa użyteczne operatory do zwiększania i zmniejszania zawartości zmiennej:
++ - zwiększa zawartość zmiennej o 1
-- - zmniejsza zawartość zmiennej o 1
Operatory te można stosować na dwa sposoby:
++ zmienna lub
zmienna ++
-- zmienna lub
zmienna --
Jeśli operacja zwiększania zmiennej jest samodzielną instrukcją, to nie ma znaczenia, który z tych sposobów użyjemy. Poniższe dwa programy dają identyczne wyniki:
// Modyfikacja zmiennej
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int a = 125, b = 30;
++a; --b;
cout << a << " " << b << endl;
system("pause");
return 0;
}
|
// Modyfikacja zmiennej
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int a = 125, b = 30;
a++; b--;
cout << a << " " << b << endl;
system("pause");
return 0;
}
|
W obu programach tworzone są dwie zmienne a i b. Zmiennej a nadajemy wartość 125, a zmiennej b 30. Następnie program zwiększa zawartość zmiennej a o 1 do 126, a zawartość zmiennej b zmniejsza o 1 do 29. Na koniec zawartości zmiennych są kolejno wyświetlane i otrzymujemy liczby 126 i 29. W pierwszym programie operatory ++ i -- stosujemy przed zmiennymi, a w drugim po zmiennych.
Jeśli operator zwiększania ++ lub zmniejszania -- zastosujemy do zmiennej użytej w wyrażeniu, to bardzo istotne jest, którą z form wybierzemy:
++ zmienna, -- zmienna : najpierw modyfikuje
zawartość zmiennej, a następnie wynik jest używany do obliczeń w wyrażeniu
zmienna ++, zmienna -- : w wyrażeniu stosowana jest bieżąca
zawartość zmiennej, a następnie po wyliczeniu wyrażenia zmienna jest
modyfikowana.
Przykład:
Poniższe dwa programy dają różne wyniki:
// Modyfikacja zmiennej
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int a = 125, b = 30,c,d;
c = ++a; d = --b;
cout << a << " " << b << " "
<< c << " " << d << endl;
system("pause");
return 0;
}
|
// Modyfikacja zmiennej
// (C)2010 I LO w Tarnowie
//----------------------------------
#include <iostream>
using namespace std;
int main()
{
int a = 125, b = 30,c,d;
c = a++; d = b--;
cout << a << " " << b << " "
<< c << " " << d << endl;
system("pause");
return 0;
}
|
Programy różnią się jedynie sposobem umieszczenia operatorów ++
oraz -- w stosunku do modyfikowanej zmiennej. W obu przypadkach zmienna a
przyjmuje na końcu wartość 126, a zmienna b 29. Jednakże w
pierwszym programie do zmiennej c trafi 126 i do d 29,
a w drugim do c trafi 125, a do
d 30. W pierwszym programie zmienna a w wyrażeniu
c = ++a;d = --b; do zmiennej c trafi najpierw zawartość zmiennej
a, czyli 125, a następnie zmienna a zostanie zwiększona do 126.
Podobnie w wyrażeniu do zmiennej d
trafi zawartość
b, czyli 30, a następnie zmienna b zostanie zmniejszona do
29.
Na opisane wyżej zjawisko należy bardzo uważać w programach C++, gdyż często prowadzi ono do trudno wykrywalnych błędów. Najbezpieczniej jest modyfikować zmienną poza wyrażeniami, lecz często robi się to wewnątrz wyrażeń w celu optymalizacji kodu. Wybór jest twój - zostałeś ostrzeżony.
Poza prostymi operatorami zwiększania lub zmniejszania o 1 zawartości zmiennej, język C++ posiada bogatą gamę operatorów modyfikacji:
zmienna += wyrażenie; - zwiększa zawartość zmiennej
o wartość wyrażenia:
a += 2; //
zmienne a zostaje zwiększona o 2
c += a + b; // zmienna c zostaje zwiększona o sumę zmiennych
a i b
zmienna -= wyrażenie; - zmniejsza zawartość zmiennej
o wartość wyrażenia:
a -= 3; //
zmienna a zostaje pomniejszona o 3
b -= 2 * c; // zmienna b zostaje pomniejszona o 2 * c
zmienna *= wyrażenie; - mnoży zawartość zmiennej
przez wartość wyrażenia
a *= 3; //
zmienna a zostaje pomnożona przez 3
b *= c - d; // zmienna b zostaje pomnożona przez różnicę
zmiennych c i d
zmienna /= wyrażenie; - dzieli zawartość zmiennej
przez wartość wyrażenia
a /= 4; //
zawartość zmiennej a zostaje podzielona przez 4
b /= c--; // zawartość zmiennej b zostaje
podzielona przez c, po czym c zostaje zmniejszone o 1
zmienna %= wyrażenie; - w zmiennej zostanie
umieszczona reszta z dzielenia tej zmiennej przez wartość wyrażenia:
a %= 10; // w zmiennej
a znajdzie się reszta z dzielenia a przez 10, czyli ostatnia cyfra dziesiętna
a %= 2; // w zmiennej a będzie 0,
jeśli a było parzyste, lub 1, jeśli a było nieparzyste
Podane powyżej operatory modyfikacji (jak również instrukcje przypisania) mogą wystąpić w wyrażeniach, lecz odradzamy takie rozwiązania poza szczególnymi wyjątkami - prowadzą one do bardzo zawiłych kodów, które trudno później analizować:
a = 1; b = 2; c = 3;
a = c + (b += 5 * (c *= 3 + b)); // odpowiedz bez uruchamiania, jaki
będzie wynik w a?
![]() | 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