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;
printf("%d\n", skore);

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; (u typu int jde o celočíselné dělení)
  • 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
printf("Peníze: %d Kč\n", penize);

int navstevy = 0;
navstevy++;
navstevy++;
printf("Návštěvy: %d\n", navstevy);

Vypíše:

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

++ uvidíte často v cyklech, kde se jím počítá 1, 2, 3 a tak dál.

Typické chyby, které překladač na tomto webu nezastaví, takže uvidíte jen špatný výsledek:

  • skore + 10; samo o sobě proměnnou nezmění. Výsledek se spočítá a hned zahodí, protože ho nic neukládá.
  • skore =+ 10; s prohozenými znaky 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í:

9/11