Změna hodnoty proměnné

Novou hodnotu proměnné často počítáte z té současné. Hráč sebere minci a jeho skóre se zvýší o 10:

int skore = 30;
skore = skore + 10;
std::cout << skore << "\n";

Vypíše:

40

V matematice by skore = skore + 10 nedávalo smysl. V C++ ale = znamená „ulož“: nejdřív se spočítá pravá strana se současnou hodnotou (30 + 10) a výsledek, 40, se pak uloží do proměnné skore. Původní hodnota se tím přepíše.

Programy to dělají tak často, že na to má C++ zkratky:

  • skore += 10; znamená totéž co skore = skore + 10;
  • skore -= 10; znamená skore = skore - 10;
  • skore *= 2; znamená skore = skore * 2;
  • skore /= 2; znamená skore = skore / 2;
  • skore++; přičte 1 a skore--; odečte 1
int penize = 100;
penize -= 30;  // koupili jste knihu
penize += 50;  // prodali jste starou hru
penize *= 2;   // babička vám úspory zdvojnásobila
std::cout << "Peníze: " << penize << " Kč\n";

int pocetNavstev = 0;
pocetNavstev++;
pocetNavstev++;
std::cout << "Návštěvy: " << pocetNavstev << "\n";

Vypíše:

Peníze: 240 Kč
Návštěvy: 2

++ uvidíte hlavně v cyklech, kde se jím počítá 1, 2, 3 a tak dál. Najdete ho i v názvu jazyka: C++ je jazyk C vylepšený o jedničku.

Typické chyby:

  • skore + 10; samo o sobě proměnnou nezmění. Výsledek se spočítá a hned zahodí, protože ho nic neukládá. Program se přesto přeloží, takže neuvidíte chybu, jen špatný výsledek.
  • skore =+ 10; s prohozenými znaky se také přeloží, ale znamená skore = +10;, tedy uloží do proměnné 10. Správně je +=: plus před rovnítkem a bez mezery mezi nimi.

Pokyny

Pod první komentář přičtěte k proměnné skore 10 pomocí +=.

Pod druhý komentář uberte hráči jeden život pomocí --.

Pod třetí komentář zdvojnásobte skóre pomocí *=. Program by pak měl vypsat:

Skóre: 100
Životy: 2

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/9